You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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: {},
  },
];

额外检查点

  1. 确保已安装globals依赖:
    npm install globals --save-dev
    
  2. 若仍有问题,可在业务代码配置的rules中临时关闭no-undef(仅作应急,不推荐长期使用):
    rules: {
      "no-undef": "off"
    }
    

原理说明

将jest配置独立为仅针对测试文件的规则项,避免它和业务代码的全局变量配置冲突。Node.js环境的globals.node已经包含console等全局变量,只要配置正确就能被ESLint识别,不会再触发未定义错误。

内容的提问来源于stack exchange,提问作者Stanley Ulili

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 18:12:33