1

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); 

?? ありがとう!

4

1 に答える 1

1

これは、ES6 テンプレート文字列と競合する lodash スタイル テンプレートをサポートする Yeoman によるものです。

修正は、次のオプション オブジェクトをテンプレート コピー ルーチンに (最後のパラメーターとして) 渡すことで、EJS スタイルのテンプレート区切り文字のみを使用するように Yeoman に強制することです。

this.fs.copyTpl(
  this.templatePath('_foo.js'),
  this.destinationPath(`foo.js`),
  variables,
  { interpolate: /<%=([\s\S]+?)%>/g }
);

(参照: http://mammal.io/articles/yeoman-generators-es6/ )。

別のややハックな回避策は、目的のコード行を EJS テンプレート タグ内の文字列に埋め込むことです。

<%= 'app.use(`/api/${apiVersion}`, apiRoutes);' %>
于 2016-07-28T01:40:36.393 に答える