eslint 抱怨 NodeJS 文件中未定义 __dirname

Pat*_*atS 20 eslint

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

const data = fs.readFileSync(path.join(__dirname, _FILENAME));
Run Code Online (Sandbox Code Playgroud)

错误是:

error  '__dirname' is not defined
Run Code Online (Sandbox Code Playgroud)

我做了一些搜索,发现当您添加到未定义的--experimental节点命令时。__dirname然而,对我来说情况并非如此。我没有使用该--experimental标志运行节点。

看看这些问题:

GOT*_*O 0 43

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

{
    "env": {
        "node": true
    }
}
Run Code Online (Sandbox Code Playgroud)

还有其他指定环境的方法,它们在相关文档中进行了解释。

  • 这(对我来说)很奇怪,因为当我运行 `npm init @eslint/config` 时,我选择 **NodeJS** 作为运行时环境。我不确定为什么选择**浏览器**。当我删除“browser: true”并放入“node: true”时,问题就消失了。谢谢。 (4认同)

joe*_*lin 9

我也遇到了同样的情况。将其添加到 .eslintrc.json 为我解决了这个问题:

"globals": {
    "__dirname": true
}
Run Code Online (Sandbox Code Playgroud)

从有关全局的类似问题中得到了想法processhttps ://stackoverflow.com/a/56777068/936907