es6 模板文字上的 EJS 错误
EJS error on es6 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 (/.../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(
this.templatePath('_foo.js'),
this.destinationPath(`foo.js`),
variables,
{ interpolate: /<%=([\s\S]+?)%>/g }
);
(参考:http://mammal.io/articles/yeoman-generators-es6/)。
另一种更 hackier 的解决方法是将所需的代码行嵌入到 EJS 模板标签内的字符串中:
<%= 'app.use(`/api/${apiVersion}`, apiRoutes);' %>
我正在创建 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(
this.templatePath('_foo.js'),
this.destinationPath(`foo.js`),
variables,
{ interpolate: /<%=([\s\S]+?)%>/g }
);
(参考:http://mammal.io/articles/yeoman-generators-es6/)。
另一种更 hackier 的解决方法是将所需的代码行嵌入到 EJS 模板标签内的字符串中:
<%= 'app.use(`/api/${apiVersion}`, apiRoutes);' %>