2015-09-25 53 views
5

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

但是,运行node index.js得到了一个“SyntaxError:[let]在严格模式外不受支持。” 运行与“冗余”"use strict"编译。

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

+1

您可以使用'--use-strict'标志运行节点 –

+2

ESLint是“错误的”,但可配置:'/ * eslint strict:0 * /'。 – Amit

+0

就是这样,@ExplosionPills!谢谢。为什么不把它作为答案并赢得几点? –

回答

9

ESLint对自己认为有效或无效的警告或错误作出自己的决定。你必须把eslint/jslint/jshint所说的所有东西都视为咨询。据某人说,他们的建议是最佳的,完全有效的。

话虽这么说,你确实有一些选项来抑制这个特定的警告:在代码中的注释

  • 使用eslint标志
  • 运行eslint与配置来指定该标志
  • 使用--use-strict标志运行时node

为什么你得到这个警告的具体原因是d o事实上,默认的节点解释器并不完全支持ES6。例如,在节点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标志。这是一个短暂的烦恼,这使得它更加可以忍受。 –