我刚刚开始使用 eslint。 我初始化了它并开始修复它指出的问题。 然而,它不应该抱怨一个问题:
const data = fs.readFileSync(path.join(__dirname, _FILENAME));
错误是:
error '__dirname' is not defined
我做了一些搜索,发现当您将
--experimental
添加到节点命令时,__dirname
未定义。 然而,对我来说情况并非如此。 我没有使用 --experimental
标志运行节点。
查看这些问题:
发生这种情况是因为 ESLint 不知道您的代码应该在 Node.js 中使用:
__dirname
未在浏览器中定义,也未在 ES 模块中定义。要告诉 ESLint 您的代码将作为 CommonJS 模块在 Node.js 中运行,请打开 ESLint 配置并在 node: true
部分中设置 env
。如果您使用 .eslintrc.json:
{
"env": {
"node": true
}
}
还有其他方法来指定环境,它们在相关文档中进行了解释。
我也遇到了同样的情况。将其添加到 .eslintrc.json 为我解决了这个问题:
"globals": {
"__dirname": true
}
从关于
process
全局的类似问题中得到了想法:https://stackoverflow.com/a/56777068/936907
2024 年,您需要
globals.node
。对于上下文,示例如下 eslint.config.mjs
:
export default [
pluginJs.configs.recommended,
{
files: ['**/*.js'],
languageOptions: {
sourceType: 'commonjs',
globals: { ...globals.node }
},
rules: {
semi: ['error', 'never']
}
}
]