在使用seajs+jquery
的项目里,如果不设置eslint env
环境变量 ,define和$都会提示未定义
{
"resource": "/d:/project/add.js",
"owner": "eslint",
"code": "no-undef",
"severity": 8,
"message": "'define' is not defined.",
"source": "eslint",
"startLineNumber": 4,
"startColumn": 1,
"endLineNumber": 4,
"endColumn": 7
}
{
"resource": "/d:/project/add.js",
"owner": "eslint",
"code": "no-undef",
"severity": 8,
"message": "'$' is not defined.",
"source": "eslint",
"startLineNumber": 5,
"startColumn": 5,
"endLineNumber": 5,
"endColumn": 6
}
解决
在.eslintrc
配置文件里,设置evn
,jquery和amd为true
"env": {
"browser": true,
"node": true,
"jquery":true,
"amd":true
},
其他环境变量
browser - 浏览器全局变量。
node - Node.js全局变量和Node.js范围。
commonjs - CommonJS全局变量和CommonJS范围(将此用于使用Browserify / WebPack的仅浏览器代码)。
shared-node-browser - Node.js和Browser共有的全局变量。
es6- 启用除模块之外的所有ECMAScript 6功能(这会自动将ecmaVersion解析器选项设置为6)。
worker - 网络工作者全局变量。
amd- 根据amd规范定义require()和define()作为全局变量。
mocha - 添加所有Mocha测试全局变量。
jasmine - 为版本1.3和2.0添加了所有Jasmine测试全局变量。
jest - Jest全局变量。
phantomjs - PhantomJS全局变量。
protractor - 量角器全局变量。
qunit - QUnit全局变量。
jquery - jQuery全局变量。
prototypejs - Prototype.js全局变量。
shelljs - ShellJS全局变量。
meteor - 流星全球变量。
mongo - MongoDB全局变量。
applescript - AppleScript全局变量。
nashorn - Java 8 Nashorn全局变量。
serviceworker - 服务工作者全局变量。
atomtest - 原子测试辅助全局。
embertest - 灰烬测试助手全局。
webextensions - WebExtensions全局变量。
greasemonkey - GreaseMonkey全局变量。
参考:
eslint使用注意事项
eslint环境变量设置
该规则禁止词法声明(`let`,`const`,`function`和`class`在)`case/ default`条款。原因是词法声明在整个开关块中是可见的,但只有在分配时才会被初始化,这只有在达到定义它的情况下才会发生。
如果您希望通过启用环境来允许一组全局变量,但仍希望禁止其中某些变量,则禁止使用特定的全局变量非常有用。 例如,早期的Internet Explorer版本将当前的DOM事件暴露为全局变量 event,但是长期以来,使用此变量一直被认为是一种不好的做法。限制此操作将确保在浏览器代码中不使用此变量。