SyntaxError:在严格模式下使用const

2020/10/11 02:41 · javascript ·  · 0评论

我正在使用node.js,并且在中使用的一个js文件const"strict mode"尝试运行它时,出现错误:

SyntaxError: Use of const in strict mode.

最佳做法是什么?

编辑:

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

constlet是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功能(包括constlet);用和声标志启动节点程序,否则会出现语法错误。例如:

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来使用正确版本的节点即可解决此问题。

自从问问题以来,该const关键字的草稿已经成为ECMAScript 2015一部分的生活标准另外,当前版本的Node.js支持不带--harmony标志的const声明

有了上面说的,你现在可以运行node 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 update,我终于能够按预期运行该应用程序。不再有“在严格模式下常量”错误。

ECMAScript不支持const。因此,在指定严格模式后,您会收到语法错误。如果要使代码与所有浏览器兼容,则需要使用var而不是const。我知道,这不是理想的解决方案,但这就是它的本质。有多种方法可以在JavaScript中创建只读属性(请参阅可以在Pure JavaScript中实现只读属性吗?),但我认为根据您的情况,它可能会显得过大。

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

浏览器兼容性

当前const的实现是Mozilla特定的扩展,不属于ECMAScript5。它在Firefox和Chrome(V8)中受支持。从Safari 5.1.7和Opera 12.00开始,如果在这些浏览器中使用const定义变量,则以后仍可以更改其值。它在Internet Explorer 6-10中不受支持,但在Internet Explorer 11中包含。const关键字当前在函数范围内声明常量(例如用var声明的变量)。

Firefox(至少从版本13开始),如果您重新声明常量,则会引发TypeError。如果将另一个值分配给常量,则所有主流浏览器都不会产生任何通知或错误。此类操作的返回值是分配的新值的返回值,但是仅在Firefox和Chrome中(至少从版本20开始),重新分配才成功。

const将由ECMAScript 6定义,但是具有不同的语义。与用let语句声明的变量相似,用const声明的常量将是块作用域的。

使用的const严格模式下使用Chrome浏览器41.目前,发布Chrome浏览器测试版41已经释放,并支持它。

cd /
npm install -g nave
nave use 6.11.1
node app.js
本文地址:http://javascript.askforanswer.com/syntaxerrorzaiyangemoshixiashiyongconst.html
文章标签: ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!