记录一次 npm ERR! cb() never called! 解决过程

gitlab cicd过程,使用docker部署Vue3前端项目,报错如下:


针对 npm ERR! cb() never called! 这个报错,网上有很多解决方案,大都是清空缓存,重新运行npm 之类的。笔者全都试过,无法解决问题。笔者遇到的问题比较特殊,分析如下:

1、这个项目是2年前建立的,当时的Vue3版本还比较低,使用的node版本是v14.18.1,就在不久前,node官方不再支持node14,才造成打包报错。

2、基于docker文件先打出docker包,gitlab的CICD每次包pipline时都会新建一个docker容器,重新执行npm install 命令;
npm install 无论是否增加代理,都会连到npm官方库拉取安装包,node:v14.18.1对应的npm包已经无法拉取完整的了。

解决:

1、升级node到v16.

2、针对package.json的所有依赖全部清空,然后 针对老的依赖中的每个依赖包单独执行 npm i <package>,如:

npm i moment --save  

安装过程中可能会出现依赖的问题,如下。这个报错就是不知道依赖的Vue是哪个版本,因此也无法安装具体的依赖。解决方法是先安装Vue3的某个版本。

npm i pinia --save

npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.
npm ERR! code ERESOLVE
npm ERR! ERESOLVE could not resolve
npm ERR!
npm ERR! While resolving: knowledgehub@0.0.0
npm ERR! Found: vue@3.4.13
npm ERR! node_modules/vue
npm ERR!   peer vue@"^3.2.0" from @element-plus/icons-vue@2.3.1
npm ERR!   node_modules/@element-plus/icons-vue
npm ERR!     @element-plus/icons-vue@"^2.3.1" from element-plus@2.8.0
npm ERR!     node_modules/element-plus
npm ERR!       element-plus@"^2.8.0" from the root project
npm ERR!   peer vue@"^3.2.25" from @vitejs/plugin-vue@2.3.4
npm ERR!   node_modules/@vitejs/plugin-vue
npm ERR!     dev @vitejs/plugin-vue@"^2.3.4" from the root project
npm ERR!   4 more (@vue/server-renderer, vue-demi, vue-demi, element-plus)
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! pinia@"*" from the root project
npm ERR!
npm ERR! Conflicting peer dependency: vue@2.6.14
npm ERR! node_modules/vue
npm ERR!   peer vue@">= 2.5 < 2.7" from @vue/composition-api@1.7.2
npm ERR!   node_modules/@vue/composition-api
npm ERR!     peerOptional @vue/composition-api@"^1.4.0" from pinia@2.2.1
npm ERR!     node_modules/pinia
npm ERR!       pinia@"*" from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force, or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
npm ERR!
npm ERR! See C:\Users\jianjuns\AppData\Local\npm-cache\eresolve-report.txt for a full report.

3、先执行需要安装的Vue3的版本

npm i vue@3.2.37 --save  // 此处必须制定Vue3的版本,Vue的版本指定后,其他包的版本会自动指定

npm i vue-axios --save

npm i vue-cropper --save

npm i vue-cropper --save

原来的package.json文件如下:

全部依赖更新完成后的截图如下:

观察后可见,vue版本和各个依赖的包的版本都升级到了最新的版本。

修改完成后,重新提交发布,发布成功。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当在Node.js中遇到`npm ERR! cb() never called!`这样的错误时,这通常意味着某个回调函数没有被正确地调用或执行。这个问题可能出现在包管理器(npm)处理依赖、安装或更新过程中。这里有几个步骤可以帮助你解决问题: 1. **检查代码**:首先,查看出错的上下文,尤其是在npm脚本中是否有一个预期会触发回调的函数。确保所有异步操作都有相应的回调函数,并且它们都被正确地调用了。 2. **刷新缓存**:有时候npm缓存可能会出现问题,尝试运行 `npm cache clean --force` 清除并重新安装。 3. **删除node_modules**:如果上述方法无效,试试删除 `node_modules` 目录然后重新安装所有依赖,命令是 `rm -rf node_modules && npm install`。 4. **检查网络连接**:如果是网络问题导致下载失败,确保你的网络连接正常并且npm可以从源服务器获取正确的文件。 5. **更新npm**:如果你的npm版本过旧,可能存在已知的问题。尝试更新到最新版本:`npm install -g npm` 或者 `npx npm@latest -g`. 6. **检查日志**:运行 `npm-debug.log` 查看详细的错误日志,这有助于找到具体的错误原因。 7. **回滚到上一版本**:如果问题持续存在,考虑回滚到之前的一个已知稳定的npm版本,这样可能避免了一些未知的新版bug。 如果你能提供更具体的错误场景,我可以给出更针对性的建议。但总的来说,关键是找出哪个部分的回调没有正确完成,然后修复那个地方。如果你还有其他问题,或者发现上述步骤都不起作用,请详细描述情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值