guigrpa / docx-templates

Template-based docx report creation
MIT License
882 stars 145 forks source link

include browser.js - SyntaxError: Private field '#comment' must be declared in an enclosing class #366

Closed olivierSOW closed 4 months ago

olivierSOW commented 4 months ago

Hi,

I would like to use your code into browser. I include your browser.js in my webpage this way (i renamme browser.js to docx-templates.js)

<script type="module" src='../common/js/docx-templates.js'></script>
<script  type="module" src="js/export.js"></script>

in my top export.js file i add

import {createReport} from '../../common/js/docx-templates.js';

importing the js file seems to be OK, but when i enter the function which use createReport function, i get immediatly this error stack:

docx-templates.js:17  Uncaught (in promise) Error: Error executing command '#comment': SyntaxError: Private field '#comment' must be declared in an enclosing class
    at runUserJsAndGetRaw (docx-templates.js:17:7454)
    at H (docx-templates.js:17:14758)
    at U (docx-templates.js:17:13993)
    at walkTemplate (docx-templates.js:17:12985)
    at async ue (docx-templates.js:18:8491)
    at async HTMLButtonElement.OnExportClick (export.js:465:19)     /* this is my function */

Could you help me ?

KAVA-Leigh commented 4 months ago

I'm guessing you are using #comment as the merge tag in your template?

Because JavaScript uses # to denote private class methods, you will probably need to use a different delimiter. You may be able to use ##comment or, better still, something like {#comment#}.

jjhbw commented 4 months ago

Thanks @KAVA-Leigh , that sounds like a plausible reason! @olivierSOW if this does not solve your problem, please post a minimal reproducible example.

olivierSOW commented 4 months ago

Thanx for your support, indeed, i had some code with # in the template, thanx for your quick support !