我正在使用node.js,在我的一个js文件中,我在“严格模式”下使用const。当试图运行它时,我得到一个错误:

SyntaxError: Use of const in strict mode.

这样做的最佳实践是什么?

编辑:

'use strict'
const MAX_IMAGE_SIZE = 1024*1024; // 1 MB

当前回答

我使用pm2来启动和维护节点进程。

从CLI来看,它工作得很好。

which node
/usr/local/bin/node
node -v
v10.15.0

然而,我设置了一个cronjob,我得到了语法错误。

然后编写cronjob来检查哪个节点和node -v,令人惊讶的是,它是不同的路径和版本。

which node
/usr/bin/node
node -v
v0.10.48

为了修复cronjob,我必须使用flag -interpreter for pm2,如下所示:

pm2 start dist/server.js --interpreter=/usr/local/bin/node 

其他回答

const和let是ECMAScript 2015(也就是ES6和Harmony)的一部分,在Node.js 0.10或0.12中默认没有启用。自从Node.js 4。V8认为稳定的所有发布[ES2015]特性在Node.js上默认是打开的,并且不需要任何类型的运行时标志。Node.js文档概述了ES2015默认启用的功能,以及哪些功能需要运行时标志。所以升级到Node.js 4。X或更新的错误应该消失。

为了在Node.js 0.10和0.12中启用一些ECMAScript 2015特性(包括const和let);使用和谐标志启动节点程序,否则将出现语法错误。例如:

node --harmony app.js

这完全取决于你的strict js位于哪一边。我建议在服务器端使用带有const声明的严格模式,并使用harmony标志启动服务器。对于客户端,您应该使用Babel或类似的工具将ES2015转换为ES5,因为不是所有的客户端浏览器都支持const声明。

如果这发生在nodejs中,这是由于旧版本的nodejs。使用,更新节点

1)清除NPM的缓存:

sudo npm cache clean -f

2)安装一个名为“n”的小助手

sudo npm install -g n

3)安装最新稳定的NodeJS版本

sudo n stable

更新来自https://stackoverflow.com/a/19584407/698072的nodejs指令

我使用pm2来启动和维护节点进程。

从CLI来看,它工作得很好。

which node
/usr/local/bin/node
node -v
v10.15.0

然而,我设置了一个cronjob,我得到了语法错误。

然后编写cronjob来检查哪个节点和node -v,令人惊讶的是,它是不同的路径和版本。

which node
/usr/bin/node
node -v
v0.10.48

为了修复cronjob,我必须使用flag -interpreter for pm2,如下所示:

pm2 start dist/server.js --interpreter=/usr/local/bin/node 

通常,当执行代码所针对的节点的版本比预期的要旧时,就会发生此错误。(即0.12或更高)。

如果您正在使用NVM,请确保您使用的节点版本正确。可在节点上查看兼容性。绿色代表严格模式下的const

我在另一个帖子上发现了类似的问题,并在那里详细地发表了我的答案

更新节点后的一个重要步骤是将节点二进制文件链接到最新安装的节点版本

sudo ln -sf /usr/local/n/versions/node/6.0.0/bin/node /usr/bin/node