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

NestJS项目第三方依赖引发Error [ERR_REQUIRE_ESM]兼容问题求助

解决NestJS中wrap-ansi/wide-align的ESM兼容错误

问题根源

安装@nestjs-modules/mailer等包后,依赖链中的wrap-ansi和wide-align(CommonJS格式)尝试用require()加载最新版string-width,但最新版string-width是ESM-only模块,触发Error [ERR_REQUIRE_ESM]错误。添加"type": "module"会切换项目为ESM模式,但部分依赖仍为CommonJS,引发新的兼容问题。

解决方案

1. 锁定兼容版string-width

在package.json中添加版本锁定配置,强制使用同时支持CommonJS和ESM的string-width@^4.2.3:

  • Yarn用户:添加resolutions字段
    "resolutions": {
      "string-width": "^4.2.3"
    }
    
  • NPM用户:添加overrides字段
    "overrides": {
      "string-width": "^4.2.3"
    }
    

2. 清理并重装依赖

执行以下命令彻底清理旧依赖并重新安装:

# 删除node_modules和锁定文件
rm -rf node_modules yarn.lock package-lock.json

# 重新安装依赖
yarn install # 或 npm install

3. 移除"type": "module"

NestJS默认基于CommonJS运行,移除package.json中的"type": "module"字段,避免触发更多模块格式冲突。

验证

运行任意Nest命令(如nest start或nest build),确认错误不再出现。

内容的提问来源于stack exchange,提问作者Aldemar Cuartas Carvajal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 07:50:10