什么是 ESLint?
ESLint 是一个 JavaScript 代码检查工具,用于检查代码中的语法和代码风格错误。它可以通过一系列的规则来检查代码,这些规则可以通过配置文件进行配置以满足不同的项目需求。此外,它还可以集成到代码编辑器中,例如 VSCode、Sublime Text、Atom 等,从而实现实时检查。
为什么会出现 'global' is not defined 的错误?
在编写 JavaScript 代码时,如果有全局变量未声明,就会触发 ESLint 报错 'global' is not defined。例如下面的代码:
function foo() { console.log(global); } foo();
此时,ESLint 会提示 'global' is not defined
。
如何解决这个问题?
要解决这个问题,我们需要明确的是,JavaScript 中的全局变量分为两类:浏览器全局变量和 Node.js 全局变量。
浏览器全局变量
在浏览器环境中,有很多全局变量都已经被定义了,例如 window、document、navigator 等。如果在代码中使用这些变量,并且未声明它们,就会出现 'global' is not defined
的错误。
此时,我们需要在 ESLint 配置文件中添加一个 globals 的配置选项:
{ "globals": { "window": true, "document": true, "navigator": true } }
以上配置项表示我们认可在代码中使用这些全局变量。
Node.js 全局变量
在 Node.js 环境中,也有一些全局变量被定义了,例如 process、Buffer 等。如果在代码中使用这些变量,并且未声明它们,同样会触发 ESLint 报错 'global' is not defined。
此时,我们需要在 ESLint 配置文件中添加一个 env 的配置项:
{ "env": { "node": true } }
以上配置项表示我们的代码是在 Node.js 环境中运行的,ESLint 就知道自己应该认可哪些全局变量了。
进一步的配置
除了以上的配置项外,ESLint 还有很多其他的配置项,具体可以参考 ESLint 官方文档[1]。
总结
在编写 JavaScript 代码时,如果出现了 'global' is not defined 的错误,我们需要明确这个错误的原因,然后针对性地进行修改。在 ESLint 的配置文件中,可以通过 globals 和 env 配置选项来告诉 ESLint 应该认可哪些全局变量。
参考资料
[1] ESLint 官方文档:https://eslint.org/docs/2.0.0/user-guide/configuring
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65b37befadd4f0e0ffc8dffd