使用require导入chessjs出现ERR_REQUIRE_ESM错误,求解决方案
解决chess包require导入失败的问题
问题根源
当前chess包已切换为ES模块(ESM),而你的代码采用CommonJS规范的require()语法加载,两者不兼容,因此触发ERR_REQUIRE_ESM错误。
可行解决办法
1. 用动态import适配CommonJS环境
在CommonJS脚本中,通过异步动态导入来加载ES模块:
async function setupChess() { const { default: Chess } = await import('chess'); const chess = new Chess(); // 这里写你的业务逻辑 } setupChess();
2. 把你的代码转为ES模块
- 方式一:将脚本文件后缀改为
.mjs,使用ESM的import语法:
import Chess from 'chess'; const chess = new Chess();
- 方式二:在项目根目录的
package.json中添加配置,让所有.js文件默认以ES模块解析:
{ "type": "module" }
之后直接用import语法导入即可。
3. 降级到支持CommonJS的旧版本(不推荐)
如果必须坚持用require(),可以安装尚未转为ESM的旧版本:
npm install chess@0.12.0
⚠️ 注意:旧版本可能缺失新特性和安全补丁,仅作为临时方案。
内容的提问来源于stack exchange,提问作者divinelemon
相关产品推荐
相关产品推荐

