npm安装firebase报错404 Not Found: protobufjs@^5.0.0的原因及解决方法
安装Firebase时遇到
protobufjs@^5.0.0 404错误的原因与解决方法 我尝试通过执行以下命令在项目中安装firebase:
npm install -S firebase得到错误:
npm ERR! code E404 npm ERR! 404 Not Found: protobufjs@^5.0.0 npm ERR! 本次运行的完整日志可查看: npm ERR! /Users/my_username/.npm/_logs/2018-05-30T03_26_22_054Z-debug.log日志内容如下:
83 verbose stack Error: 404 Not Found: protobufjs@^5.0.0 83 verbose stack at fetch.then.res (/usr/local/lib/node_modules/npm/node_modules/pacote/lib/fetchers/registry/fetch.js:42:19) 83 verbose stack at tryCatcher (/usr/local/lib/node_modules/npm/node_modules/bluebird/js/release/util.js:16:23) 83 verbose stack at Promise._settlePromiseFromHandler (/usr/local/lib/node_modules/npm/node_modules/bluebird/js/release/promise.js:512:31) 83 verbose stack at Promise._settlePromise (/usr/local/lib/node_modules/npm/node_modules/bluebird/js/release/promise.js:569:18) 83 verbose stack at Promise._settlePromise0 (/usr/local/lib/node_modules/npm/node_modules/bluebird/js/release/promise.js:614:10) 83 verbose stack at Promise._settlePromises (/usr/local/lib/node_modules/npm/node_modules/bluebird/js/release/promise.js:693:18) 83 verbose stack at Async._drainQueue (/usr/local/lib/node_modules/npm/node_modules/bluebird/js/release/async.js:133:16) 83 verbose stack at Async._drainQueues (/usr/local/lib/node_modules/npm/node_modules/bluebird/js/release/async.js:143:10) 83 verbose stack at Immediate.Async.drainQueues (/usr/local/lib/node_modules/npm/node_modules/bluebird/js/release/async.js:17:14) 83 verbose stack at runCallback (timers.js:649:20) 83 verbose stack at tryOnImmediate (timers.js:622:5) 83 verbose stack at processImmediate [as _immediateCallback] (timers.js:594:5)
错误原因解析
这个404 Not Found错误本质是npm在尝试下载protobufjs的5.x系列版本时,找不到对应的包资源。常见诱因有这几个:
- 该旧版本的包已经被npm官方仓库移除或归档,不再提供下载;
- 你当前使用的npm源无法访问到这个旧版本的包;
- 本地npm缓存损坏,导致系统错误地认为这个包不存在。
一步步解决方法
1. 先清理本地npm缓存
缓存损坏是这类问题的常见元凶,先执行清理命令:
npm cache clean --force
清理完成后,重新尝试安装Firebase:
npm install -S firebase
2. 切换到稳定的npm源
如果默认的npm源访问不稳定或者缺少旧版本包,可以切换到国内镜像源:
npm config set registry https://registry.npmmirror.com
设置完成后再次执行安装命令即可。
3. 手动指定兼容的protobufjs版本
如果上面两种方法都不行,说明5.x版本确实无法获取到了。好在protobufjs的6.x版本和Firebase的依赖是兼容的,我们可以先手动安装高版本,再安装Firebase:
npm install -S protobufjs@^6.11.3 npm install -S firebase
内容的提问来源于stack exchange,提问作者etayluz
相关产品推荐
相关产品推荐

