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

引入chalk修改控制台颜色出现ESM require报错如何解决

报错原因

Chalk 自 5.0.0 版本起不再提供 CommonJS 兼容支持,是纯 ESM 包。如果你的项目是 Node.js 默认的 CommonJS 模块规范(根目录 package.json 未配置 "type": "module"),直接用 const chalk = require('chalk') 引入高版本 Chalk 就会抛出 ESM require 相关的报错,这是模块规范不匹配导致的,不是安装失败或者代码写错。

修复方案

根据你的项目实际情况选一个即可:

  • 方案1:全项目切换为ESM规范
    适合新项目或者没有太多CommonJS历史代码的项目,打开根目录package.json添加配置:

    {
      "type": "module"
    }
    

    把Chalk的引入语句改成ESM写法即可正常使用:

    import chalk from 'chalk'
    console.log(chalk.red('这是红色的控制台输出'))
    

    注意:配置"type": "module"后,项目内所有.js文件默认按ESM规则解析,原有的require()、module.exports写法都要替换成import/export,老项目改动成本高不建议选。

  • 方案2:降级Chalk到兼容CommonJS的版本
    成本最低的方案,不需要改任何现有项目配置和代码,直接卸载当前高版本Chalk,安装最后一个支持CommonJS的稳定版:

    npm uninstall chalk
    npm install chalk@4.1.2
    

    安装完成后原有const chalk = require('chalk')的写法可以直接运行,所有颜色API和高版本基本一致,绝大多数场景下完全够用。

  • 方案3:CommonJS项目动态加载高版本Chalk
    如果不想降级Chalk,也不想改动整个项目的模块规范,可以用CommonJS支持的动态import方法异步加载Chalk:

    // 所有用到chalk的逻辑需要放在异步上下文里执行
    async function init() {
      const chalk = (await import('chalk')).default
      console.log(chalk.blue('这是蓝色的控制台输出'))
    }
    init()
    

    缺点是涉及Chalk的逻辑都要写在异步函数里,代码书写灵活度稍差。

额外排查点

如果用了TypeScript,还要同步检查tsconfig.json的模块配置:

  • 用高版本Chalk时,compilerOptions.module要设置为NodeNext或者ESNext
  • 不想改TS配置的话直接用Chalk 4.x版本即可,不需要额外调整配置

内容的提问来源于stack exchange,提问作者Amit Sharma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 11:48:27