ESLint 9+Jest环境下'console is not defined'错误求助
解决ESLint 9 Flat配置中'console is not defined'的问题
问题分析
你当前的ESLint 9配置里,把jest.configs["flat/recommended"]直接展开在同一个配置对象内,导致jest配置的字段可能覆盖了你定义的languageOptions.globals,使得Node.js环境的全局变量(包括console)没被正确识别,从而触发no-undef错误。
解决方案
调整配置结构,把jest相关配置拆成独立的数组项,确保业务代码的Node.js全局变量配置生效:
修改后的eslint.config.js
import globals from "globals"; import pluginJs from "@eslint/js"; import jest from "eslint-plugin-jest"; export default [ // 基础JS推荐规则 pluginJs.configs.recommended, // 单独配置jest规则,仅作用于测试文件 { files: ["**/*.test.js", "**/*.spec.js"], ...jest.configs["flat/recommended"], plugins: { jest, }, }, // 业务代码配置:启用Node.js全局变量 { files: ["**/*.js"], ignores: ["**/*.test.js", "**/*.spec.js"], languageOptions: { globals: { ...globals.node }, }, rules: {}, }, ];
额外检查点
- 确保已安装
globals依赖:npm install globals --save-dev - 若仍有问题,可在业务代码配置的
rules中临时关闭no-undef(仅作应急,不推荐长期使用):rules: { "no-undef": "off" }
原理说明
将jest配置独立为仅针对测试文件的规则项,避免它和业务代码的全局变量配置冲突。Node.js环境的globals.node已经包含console等全局变量,只要配置正确就能被ESLint识别,不会再触发未定义错误。
内容的提问来源于stack exchange,提问作者Stanley Ulili
相关产品推荐
相关产品推荐

