Yeoman es6模板文本上的EJS错误

Yeoman es6模板文本上的EJS错误,yeoman,lodash,ejs,template-literals,Yeoman,Lodash,Ejs,Template Literals,我正在创建一个Yeoman Express应用程序生成器,并使用一个包含模板文本的模板js文件。 我希望输出文件包含这一行 app.use(`/api/${apiVersion}`, apiRoutes); 但是我认为${apiVersion}被解释为一个模板值,并给出了错误 ReferenceError: apiVersion is not defined at eval (lodash.templateSources[2]:9:10) at copy.process (/

我正在创建一个Yeoman Express应用程序生成器,并使用一个包含模板文本的模板js文件。 我希望输出文件包含这一行

app.use(`/api/${apiVersion}`, apiRoutes); 
但是我认为${apiVersion}被解释为一个模板值,并给出了错误

ReferenceError: apiVersion is not defined
    at eval (lodash.templateSources[2]:9:10)
    at copy.process (/.../node-microservice/node_modules/mem-fs-editor/actions/copy-tpl.js:11:58)
我怎样才能不使用这些工具就解决这个问题呢

app.use('/api/' + apiVersion, apiRoutes); 

???谢谢

这是因为Yeoman支持lodash样式的模板,这与ES6模板字符串冲突

修复方法是通过将以下选项对象传递给模板复制例程(作为最后一个参数),强制Yeoman仅使用EJS样式的模板分隔符:

this.fs.copyTpl(
这个.templatePath(“u foo.js”),
this.destinationPath(`foo.js`),
变量,
{插值://g}
);
(参考:)

另一个有点黑的解决方法是将所需的代码行嵌入EJS模板标记内的字符串中:

<%= 'app.use(`/api/${apiVersion}`, apiRoutes);' %>


EJS不依赖任何软件包。你完全正确,我的错。经过进一步研究,这根本不是一个bug,而是Yeoman的一个特性,它允许使用lodash模板和EJS,并且与ES6字符串模板混淆。
<%= 'app.use(`/api/${apiVersion}`, apiRoutes);' %>