EJS模板无法输出import语句:Angular组件生成器报错求助
解决Angular组件生成器EJS模板中import语句的编译错误
错误原因
你在EJS模板中写的import { ReactiveFormsModule } '@angular/forms';被EJS引擎当成了Node.js环境下要执行的代码,而非要输出到目标.component.ts文件的文本。由于NX生成器运行在CommonJS模块环境中,直接使用ES模块的import语法会触发“Cannot use import statement outside a module”错误,修改package.json的type字段无法解决这个问题——因为生成器的执行环境不受该配置影响。
修复方案
把需要输出的import语句作为静态文本放在条件判断块中,或者以字符串形式输出,避免EJS引擎解析执行这段代码:
写法一(推荐:直接写静态文本)
<% if( componentType === 'custom form control' ) { %> import { ReactiveFormsModule } from '@angular/forms'; <% } %>
写法二(字符串形式输出)
如果需要通过变量动态生成部分内容,可以用模板字符串拼接后输出:
<% if( componentType === 'custom form control' ) { %> <%- `import { ReactiveFormsModule } from '@angular/forms';` %> <% } %>
额外验证
确保schema中定义的componentType选项值能正确传递到模板上下文,比如在schema.json中确认componentType的枚举值包含"custom form control",且x-prompt的配置能正确收集用户输入并传入模板。
内容的提问来源于stack exchange,提问作者Optiq
相关产品推荐
相关产品推荐

