eslint 抱怨 __dirname 未在 NodeJS 文件中定义

问题描述 投票:0回答:3

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

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

错误是:

error  '__dirname' is not defined

我做了一些搜索,发现当您将

--experimental
添加到节点命令时,
__dirname
未定义。 然而,对我来说情况并非如此。 我没有使用
--experimental
标志运行节点。

查看这些问题:

eslint
3个回答
48
投票

发生这种情况是因为 ESLint 不知道您的代码应该在 Node.js 中使用:

__dirname
未在浏览器中定义,也未在 ES 模块中定义。要告诉 ESLint 您的代码将作为 CommonJS 模块在 Node.js 中运行,请打开 ESLint 配置并在
node: true
部分中设置
env
。如果您使用 .eslintrc.json:

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

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


10
投票

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

"globals": {
    "__dirname": true
}

从关于

process
全局的类似问题中得到了想法:https://stackoverflow.com/a/56777068/936907


0
投票

2024 年,您需要

globals.node
。对于上下文,示例如下
eslint.config.mjs

export default [
  pluginJs.configs.recommended,
  {
    files: ['**/*.js'],
    languageOptions: {
      sourceType: 'commonjs',
      globals: { ...globals.node }
    },
    rules: {
      semi: ['error', 'never']
    }
  }
]
© www.soinside.com 2019 - 2024. All rights reserved.