Node.js和eslint在"use strict"上存在分歧

10
ESLint告诉我,在我的index.js文件顶部不需要使用"use strict"(它是一个简单的服务器,就像https://nodejs.org/en/about/上的6行代码一样)。显然,所有的node模块已经处于严格模式。这很有道理。
然而,运行node index.js时,会出现"SyntaxError: [let] not supported outside strict mode."错误。加上"多余的""use strict"却可以运行。
为什么会这样不一致呢?难道node不知道这个node模块默认就是严格模式吗?这可能是由于node、ESLint或我的IDE的一些简单配置问题吗?

2
你可以使用 --use-strict 标志来运行 Node。 - Explosion Pills
2
ESLint是“错误”的,但是可配置的:/*eslint strict:0*/ - Amit
做得好,@ExplosionPills!谢谢。为什么不把它作为答案并赢取一些积分呢? - ivanjonas
@Amit 谢谢你,Amit。对我也起作用了! - Dao Lam
1个回答

11

ESLint对于什么被认为是有效或无效的警告或错误有自己的决定。你必须将eslint/jslint/jshint说的所有内容视为建议性质,除此之外还要做其他事情。据某人的说法,它们的建议是最佳和完全有效的。

话虽如此,你可以选择一些选项来抑制这个特定的警告:

  • 在代码注释中使用eslint标志
  • 使用配置运行eslint以指定此标志
  • 在运行node时使用--use-strict标志

关于为什么会收到此警告的具体原因与默认的node解释器不完全支持ES6有关。例如,在node 4中,即使let是ES6关键字,也不能在严格模式外使用let


2
在https://nodejs.org/en/docs/es6/和https://groups.google.com/forum/#!topic/v8-users/3UXNCkAU8Es上找到了官方文档。基本上,出于向后兼容的原因,节点目前需要ES6块作用域功能(`let`,`const`)的严格模式。将来,在`let`中不再需要--use-strict标志。这是一个暂时性的烦恼,使其更容易忍受。 - ivanjonas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接