I apologize for not mentioning the actual typo. You got it right then.
{{#xlsxReplace "xl/styles.xml"}}
{#asset style.xml}
{{/xlsxReplace}}
This is actually older v2 syntax. Its still compatible with v3, but now we use the following
https://jsreport.net/learn/assets
{{#xlsxReplace "xl/styles.xml"}}
{{asset "style.xml"}}
{{/xlsxReplace}}
However, virtually identical files with the extra curly bracket will also work.
It also does not explain why the same file was working locally but not on the test server
I have tried replicating the issue and getting some hypotheses why it works for you on one server and not on the other, but unfortunately, I don't know.