解决 npm ERR! cb() never called!

634 阅读2分钟

1. 报错信息

输入图片说明

2. 报错代码

npm ERR! cb() never called!

npm ERR! This is an error with npm itself. Please report this error at:
npm ERR!     <https://npm.community>

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\Rattenking\AppData\Roaming\npm-cache\_logs\2024-10-25T01_47_25_855Z-debug.log

3. 问题原因

这个问题,是因为npm程序执行到未知流程节点中然后没有调用回调通知任务已执行完成,导致进程异常退出,据官方说法他们也没有太好的方式解决,建议直接升级npm版本!

4. 解决方案一

  1. 删除: node_modules 文件夹
  2. 删除: package-lock.json 文件
  3. 清楚npm缓存: npm cache clean --force
  4. 再执行: npm install

记录了,说明解决了这个作者当时的问题,但是我是用这种办法,并没有解决,依然报错!

5. 解决方案二

  1. 删除代理
npm config rm proxy
npm config rm https-proxy

可能问题不一样,删除代理再次执行,依然报错,还是没有解决我的问题,苦恼!

6. 解决方案三

  1. 切换镜像
//查看源
npm config get registry
//更换源
npm config set registry https://registry.npmjs.org
//淘宝镜像
npm config set registry https://registry.npmmirror.com 

目前还是没有解决我的问题,崩溃了,快!

7. 解决方案四

  1. 查看 scripts 配置的 npm 的命令,最少我的项目里边没有配置,目前没有发现这个问题,所以还是没解决! 输入图片说明
 "i": "pnpm install"

8. 解决方案五

8.1 解决步骤

  1. 删除: node_modules 文件夹
  2. 删除: package-lock.json 文件
  3. 清楚npm缓存: npm cache clean --force
  4. 更新npm: npm install -g npm@latest
  5. 设置镜像:npm config set registry registry.npmjs.org
  6. 再执行: npm install --legacy-peer-deps

8.2 解释

  1. 第三步和第四步由于使用的是 nvm ,因此我直接安装了另一个较高版本的 node,没有升级 npm;
  2. 最开始我使用的是淘宝镜像,一直有问题,后来换成 npm 的源,就解决了问题;
  3. 最后一步注意安装还是会存在包的依赖冲突,直接使用 --legacy-peer-deps 忽略。

8.3 解决其他问题

  1. 由于最后一步导致包之间存在冲突,因此就只能一个一个的解决;
  2. 我项目中:报错 jsbarcode 包未找到,因此安装了这个包;
  3. 报错: hasInjectionContext 未找到。

8.4 hasInjectionContext 报错

1. 报错代码
No matching export in "node_modules/pinia/node_modules/vue-demi/lib/index.mjs" for import "hasInjectionContext"
2. 报错截图

输入图片说明

8.5 解决 pinia 模块的报错

  1. 强制卸载:npm uninstall pinia -f
  2. 忽略冲突安装:npm install pinia@2.0.36 --legacy-peer-deps

8.6 解释

其实后边的报错就是因为第六步忽略包关系安装导致的,如果能够知道创建项目的 node 版本和 npm 版本,最好不要使用这种方法,因为你不能保证每次都有效,这种方法会引起后续很多包冲突需要一个一个的解决。不过还好就是弄了这么久,我的项目解决了,庆祝一下!

9. 运行结果

输入图片说明