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

SyntaxError: Use of const in strict mode.

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

编辑:

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

当前回答

cd /
npm install -g nave
nave use 6.11.1
node app.js

其他回答

自从提出这个问题以来,const关键字的草案已经成为ECMAScript 2015的一部分。此外,当前版本的Node.js支持不带——harmony标志的const声明。

以上所述,你现在可以运行节点app.js,使用app.js:

'use strict';
const MB = 1024 * 1024;
...

同时获得语法的好处和严格模式的好处。

ECMAScript不支持const。所以在你指定严格模式之后,你会得到语法错误。如果您希望代码与所有浏览器兼容,则需要使用var而不是const。我知道,这不是理想的解决方案,但事实就是这样。有很多方法可以在JavaScript中创建只读属性(参见纯JavaScript中可以实现只读属性吗?),但我认为这可能是过度的,这取决于你的场景。

下面是MDN的浏览器兼容性说明:

浏览器兼容性

The current implementation of const is a Mozilla-specific extension and is not part of ECMAScript 5. It is supported in Firefox & Chrome (V8). As of Safari 5.1.7 and Opera 12.00, if you define a variable with const in these browsers, you can still change its value later. It is not supported in Internet Explorer 6-10, but is included in Internet Explorer 11. The const keyword currently declares the constant in the function scope (like variables declared with var). Firefox, at least since version 13, throws a TypeError if you redeclare a constant. None of the major browsers produce any notices or errors if you assign another value to a constant. The return value of such an operation is that of the new value assigned, but the reassignment is unsuccessful only in Firefox and Chrome (at least since version 20). const is going to be defined by ECMAScript 6, but with different semantics. Similar to variables declared with the let statement, constants declared with const will be block-scoped.

这可能不是每个人的解决方案,但对我来说是。

如果您正在使用NVM,您可能没有为正在运行的代码启用正确的node版本。重新启动后,节点的默认版本变回系统默认版本。

在使用react-native工作时遇到了这个问题,它一直工作得很好。只需使用nvm使用正确的node版本来解决这个问题。

我最近遇到了一个类似的问题,并在这个问答中结束了。这不是OP寻找的解决方案,但可能会帮助其他有类似问题的人。

我使用PM2来运行一个项目,在一个给定的登台服务器上,我有一个非常旧的Node, NPM和PM2版本。我更新了所有内容,但是,我一直保持相同的错误:

SyntaxError:在严格模式下使用const。

我多次尝试停止和启动应用程序。也试着重新更新一切。毫无效果。直到我在运行pm2 start时注意到一个警告:

>>>>内存中的PM2已过时,请执行以下操作: >>>> $ pm2更新 内存中PM2版本:0.15.10 本地PM2版本:3.2.9

明白了!在运行pm2更新之后,我终于能够让应用程序按预期运行。不再有“严格模式下的const”错误。

cd /
npm install -g nave
nave use 6.11.1
node app.js