我正在使用node.js,并且在中使用的一个js文件const
中"strict mode"
。尝试运行它时,出现错误:
SyntaxError: Use of const in strict mode.
最佳做法是什么?
编辑:
'use strict'
const MAX_IMAGE_SIZE = 1024*1024; // 1 MB
我正在使用node.js,并且在中使用的一个js文件const
中"strict mode"
。尝试运行它时,出现错误:
SyntaxError: Use of const in strict mode.
最佳做法是什么?
编辑:
'use strict'
const MAX_IMAGE_SIZE = 1024*1024; // 1 MB
使用的const
严格模式下使用Chrome浏览器41.目前,发布Chrome浏览器测试版41已经释放,并支持它。
我最近也遇到过类似的问题,并最终获得了此问答。这不是OP所寻找的解决方案,但可能会帮助其他遇到类似问题的人。
我使用PM2运行项目,并且在给定的登台服务器中,我使用的是Node,NPM和PM2的旧版本。我更新了所有内容,但是仍然保持相同的错误:
SyntaxError:在严格模式下使用const。
我试图停止并多次启动该应用程序。还尝试再次更新所有内容。没事。直到我跑步时注意到警告pm2 start
:
>>>>内存PM2已过期,请执行:
>>>> $ pm2更新
内存PM2版本:0.15.10
本地PM2版本:3.2.9
知道了!运行之后pm2 update
,我终于能够按预期运行该应用程序。不再有“在严格模式下常量”错误。
通常,当针对其执行代码的节点版本比预期的版本旧时,会发生此错误。(即0.12或更高版本)。
如果您使用的是nvm,请确保您使用的节点版本正确。您可以在严格模式下在node.green上检查const的兼容性
这可能不是每个人的解决方案,但对我而言。
如果使用的是NVM,则可能没有为运行的代码启用正确版本的节点。重新引导后,默认的节点版本将更改回系统默认值。
在使用本来很好的react-native时遇到了这个问题。只需使用nvm来使用正确版本的节点即可解决此问题。
更新节点后的重要步骤之一是将节点二进制文件链接到最新安装的节点版本
sudo ln -sf /usr/local/n/versions/node/6.0.0/bin/node /usr/bin/node
The const
and let
are part of ECMAScript 2015 (a.k.a. ES6 and Harmony), and was not enabled by default in Node.js 0.10 or 0.12. Since Node.js 4.x, “All shipping [ES2015] features, which V8 considers stable, are turned on by default on Node.js and do NOT require any kind of runtime flag.”. Node.js docs has an overview of what ES2015 features are enabled by default, and which who require a runtime flag. So by upgrading to Node.js 4.x or newer the error should disappear.
To enable some of the ECMAScript 2015 features (including const
and let
) in Node.js 0.10 and 0.12; start your node program with a harmony flag, otherwise you will get a syntax error. For example:
node --harmony app.js
It all depends on which side your strict js is located. I would recommend using strict mode with const
declarations on your server side and start the server with the harmony flag. For the client side, you should use Babel or similar tool to convert ES2015 to ES5, since not all client browsers support the const
declarations.
如果在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指令
ECMAScript不支持const。因此,在指定严格模式后,您会收到语法错误。如果您希望代码与所有浏览器兼容,则需要使用var而不是const。我知道,这不是理想的解决方案,但这就是它的本质。有多种方法可以在JavaScript中创建只读属性(请参阅可以在Pure JavaScript中实现只读属性吗?),但我认为根据您的情况,它可能会显得过分杀伤。
以下是MDN的浏览器兼容性说明:
浏览器兼容性