Node.js和eslint对"use strict"不一致

iva*_*nas 5 strict node.js eslint

ESLint告诉我,我不需要"use strict"在我的index.js文件的顶部(它是一个简单的服务器,如https://nodejs.org/en/about/上的6行服务器).显然,所有节点模块都已处于严格模式.说得通.

但是,运行node index.js会给我一个"SyntaxError:[let]不支持外部严格模式." 确实运行"冗余"的"use strict"pragma.

为什么不一致?节点是否应该知道默认情况下此节点模块确实严格?这可能是由于节点,ESLint或我的IDE的一些简单的错误配置?

Exp*_*lls 10

ESLint自行决定其认为有效或无效的警告或错误.您必须将eslint/jslint/jshint所说的所有内容视为其他所有内容的建议.据某人说,他们的建议是最佳的,完全有效.

话虽这么说,你有一些选项可以抑制这个特定的警告:

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

您收到此警告的原因的具体原因与现有的默认节点解释器不完全支持ES6这一事实有关.例如,在节点4中let,即使let是ES6关键字,也不能在严格模式之外使用.

  • 在https://nodejs.org/en/docs/es6/和https://groups.google.com/forum/#!topic/v8-users/3UXNCkAU8Es上找到了相关的官方文档.基本上,出于向后兼容性原因,节点当前需要严格的ES6块作用域模式(`let`,`const`).将来的某个时候,`let`将不需要--use-strict标志.这是一种短暂的烦恼,这让它变得更加可以忍受. (2认同)