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

执行npm i遇ES模块require不支持错误,求解决方法

解决npm i时ES Module与CommonJS冲突的问题

问题分析

你遇到的错误是因为cacache(npm的核心依赖包)中的entry-index.js使用CommonJS的require()加载了ES模块格式的p-map,而Node.js 22对ES模块和CommonJS的兼容性处理更严格,导致冲突。

推荐解决方案

1. 降级Node.js或npm版本(优先推荐)

Node.js 22是较新的版本,可能与npm 10.8.3存在兼容性问题,建议切换到LTS版本(如20.x):

  • 若使用nvm管理Node.js版本:
    nvm install 20 --lts
    nvm use 20
    
  • 若使用Manjaro的包管理器:
    sudo pacman -S nodejs-lts-hydrogen
    
    切换后重新执行npm i即可。

2. 清除缓存后重新安装

尝试清除npm缓存并删除本地依赖文件,重新安装:

npm cache clean --force
rm -rf node_modules package-lock.json
npm install

不推荐的临时方案(手动修改核心文件)

不建议修改npm的核心依赖文件,因为更新npm时会被覆盖,还可能引发其他问题。如果一定要尝试:

  1. 打开/usr/lib/node_modules/npm/node_modules/cacache/lib/entry-index.js,找到所有require('p-map')的语句。
  2. 将同步的require改为动态import(),例如:
    原代码:
    const pMap = require('p-map');
    
    修改为(需用async/await或Promise回调处理异步加载):
    // 若文件是CommonJS模块,需用async函数包裹逻辑
    async function yourFunction() {
      const { default: pMap } = await import('p-map');
      // 后续依赖pMap的代码放在这里
    }
    
    注意:这种修改可能需要调整整个文件的代码结构,风险较高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 08:39:55