Node.js / ejs-在带有循环的ejs文件中使用插值

时间:2019-02-20 12:15:30

标签: javascript node.js ejs

我在ejs文件中有一个内联(在html / ejs中)脚本,该文件是由node构建的。

homepage.ejs

<html>
  <head>

    <script>
      var i18nRotatingKws = [];
      for (var i=1; i<90; i++) { 
        var i18nRotatingKws[i] = "<%- `rotatingKws.rotatingKw${i}` %>";
      } 
    </script>
  </head>
</html>

编译ejs文件后的输出应为:

<html>
  <head>

    <script>
      var i18nRotatingKws = [];          
      var i18nRotatingKws[1] = "<%- rotatingKws.rotatingKw1 %>";
      var i18nRotatingKws[2] = "<%- rotatingKws.rotatingKw2 %>";
      var i18nRotatingKws[3] = "<%- rotatingKws.rotatingKw3 %>";
      var i18nRotatingKws[4] = "<%- rotatingKws.rotatingKw4 %>";
     //and so on until 90
    </script>
  </head>
</html>

这些值,rotatingKws.rotatingKw1,rotatingKws.rotatingKw2 ...都在i18n文件中定义(取决于语言)。

我在ejs中不使用任何循环,它运行良好。这意味着,如果我真的写了90行,例如var i18nRotatingKws[1] = "<%- rotatingKws.rotatingKw1%>“;`构建有效,并且我在网页上进行了检查,那么它也可以正常工作。

我有一个特殊的node.js脚本,该脚本在tje ejs编译以更改i18n文件中的值之前解析ejs文件,如下所示:

i18n / locales.js

module.exports = {    
  rotatingKws: {
    rotatingKw1: __("rotatingKw1"),
    rotatingKw2: __("rotatingKw2"), 
    rotatingKw3: __("rotatingKw3"),
  },
}

locales / fr.js

module.exports = {  
  //rotatingKws
  "rotatingKw1":"nice keyword1",
  "rotatingKw2":"cool stuff",
  "rotatingKw3":"hip man",
}

问题出在循环:构建失败,并且出现以下错误:

i is not defined at eval

该如何解决?

0 个答案:

没有答案