我正在使用 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
和let
是2015年的ECMAScript的一部分(又名ES6与和谐),默认情况下在Node.js的0.10或0.12没有启用。自 Node.js 4.x 起,“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
这完全取决于您的严格 js 位于哪一侧。我建议const
在服务器端使用带有声明的严格模式,并使用和声标志启动服务器。对于客户端,您应该使用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 说明
通常当执行代码的节点版本比预期的旧时,会发生此错误。(即 0.12 或更旧)。
如果您使用的是 nvm,请确保您使用的节点版本正确。您可以在 node.green 上检查严格模式下 const的兼容性
我在另一篇文章中发现了类似的问题,并在那里详细发布了我的答案
更新节点后的一个重要步骤是将节点二进制文件链接到最新安装的节点版本
sudo ln -sf /usr/local/n/versions/node/6.0.0/bin/node /usr/bin/node
这可能不是每个人的解决方案,但它适用于我。
如果您使用的是 NVM,则您可能没有为正在运行的代码启用正确版本的节点。重新启动后,您的默认节点版本将更改回系统默认值。
在使用一直运行良好的 react-native 时遇到了这个问题。只需使用 nvm 使用正确版本的 node 即可解决此问题。