我正在使用node.js,在我的一个js文件中,我在“严格模式”下使用const。当试图运行它时,我得到一个错误:
SyntaxError: Use of const in strict mode.
这样做的最佳实践是什么?
编辑:
'use strict'
const MAX_IMAGE_SIZE = 1024*1024; // 1 MB
我正在使用node.js,在我的一个js文件中,我在“严格模式”下使用const。当试图运行它时,我得到一个错误:
SyntaxError: Use of const in strict mode.
这样做的最佳实践是什么?
编辑:
'use strict'
const MAX_IMAGE_SIZE = 1024*1024; // 1 MB
当前回答
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声明。
其他回答
这可能不是每个人的解决方案,但对我来说是。
如果您正在使用NVM,您可能没有为正在运行的代码启用正确的node版本。重新启动后,节点的默认版本变回系统默认版本。
在使用react-native工作时遇到了这个问题,它一直工作得很好。只需使用nvm使用正确的node版本来解决这个问题。
自从提出这个问题以来,const关键字的草案已经成为ECMAScript 2015的一部分。此外,当前版本的Node.js支持不带——harmony标志的const声明。
以上所述,你现在可以运行节点app.js,使用app.js:
'use strict';
const MB = 1024 * 1024;
...
同时获得语法的好处和严格模式的好处。
我最近遇到了一个类似的问题,并在这个问答中结束了。这不是OP寻找的解决方案,但可能会帮助其他有类似问题的人。
我使用PM2来运行一个项目,在一个给定的登台服务器上,我有一个非常旧的Node, NPM和PM2版本。我更新了所有内容,但是,我一直保持相同的错误:
SyntaxError:在严格模式下使用const。
我多次尝试停止和启动应用程序。也试着重新更新一切。毫无效果。直到我在运行pm2 start时注意到一个警告:
>>>>内存中的PM2已过时,请执行以下操作: >>>> $ pm2更新 内存中PM2版本:0.15.10 本地PM2版本:3.2.9
明白了!在运行pm2更新之后,我终于能够让应用程序按预期运行。不再有“严格模式下的const”错误。
更新节点后的一个重要步骤是将节点二进制文件链接到最新安装的节点版本
sudo ln -sf /usr/local/n/versions/node/6.0.0/bin/node /usr/bin/node
在严格模式下使用const随Chrome 41发布。 目前,Chrome 41 Beta已经发布并支持它。