linux node.js 中的意外标识符 "let"

Unexpected identifier "let" in linux node.js

我在 node.js 中有一个循环看起来像

for(let i=0; i < req.body.Node_Config.length;i++){

//code

}

在windows

中完美工作

但是当我将它上传到基于 linux 的网络服务器时,它给我错误

 for(let i=0; i < req.body.Node_Config.length;i++){
         ^
SyntaxError: Unexpected identifier
    at Module._compile (module.js:439:25)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (/opt/OSPL_node/app.js:33:18)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)

问题不在于OS,应该是一样的。

我认为这是因为 Node 版本,请确保两种情况下的版本相同。

特别是您应该使用 Node.js 与 ES6 兼容的版本,在您的代码中它失败了,因为它无法识别 let

Here 您有一个与 let 兼容的版本列表。

正如 Antonio 的回答所说,最简单也可能是最好的方法是升级 Node。

但如果这不可能,另一种方法是使用像 Babel 这样的转译器将您的 ES2016 代码转换为旧 Node 版本可以理解的 ES5 代码。您可能还需要一些 polyfill 库,例如 babel-polyfill 来为缺少的功能提供支持。