eslint 抱怨 __dirname 没有在 NodeJS 文件中定义

eslint complains about __dirname not being defined in a NodeJS file

我刚开始使用 eslint。我初始化它并开始修复它指出的问题。 然而,有一个问题,它不应该抱怨:

const data = fs.readFileSync(path.join(__dirname, _FILENAME));

错误是:

error  '__dirname' is not defined

我做了一些搜索,发现当您将 --experimental 添加到节点命令时, __dirname 未定义。然而,这对我来说并非如此。我不是带有 --experimental 标志的 运行 节点。

查看这些问题:

发生这种情况是因为 ESLint 不知道您的代码应该在 Node.js 中使用:__dirname 未在浏览器中定义,也未在 ES 模块中定义。要告诉 ESLint 您的代码将 运行 in Node.js 作为 CommonJS 模块,请打开您的 ESLint 配置并在 env 部分设置 node: true。如果您使用 .eslintrc.json:

{
    "env": {
        "node": true
    }
}

还有其他指定环境的方法,它们在 related documentation.

中进行了解释

我运行成一样。将此添加到 .eslintrc.json 为我修复了它:

"globals": {
    "__dirname": true
}

从这个关于 process 全局的类似问题中得到灵感: