ESLint 报告 'global' is not defined

什么是 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