GitHub Action部署Firebase Functions为何需先手动安装最新版npm
问题原因
你的报错本质是npm锁文件版本和CI环境的npm版本不兼容:
lockfileVersion@2是npm v7及以上版本生成的锁文件格式- 你配置的Node.js 14版本在GitHub Actions的Ubuntu环境中,默认预装的是npm v6,仅支持
lockfileVersion@1格式的锁文件 - 其他脚本不需要额外配置的原因有两种可能:要么其他脚本用了Node 16及以上版本(默认自带npm v7+,原生支持v2锁文件),要么对应项目的
package-lock.json是用npm v6生成的v1版本。
解决方案
你可以按需选择以下任意一种方案,替换现有额外安装npm的步骤:
方案1(最推荐):升级CI环境的Node.js版本
Node 14已经停止官方维护,直接升级到长期支持的Node 16/18版本即可,这些版本默认自带的npm版本原生支持v2锁文件,不需要额外安装最新npm。
修改actions/setup-node步骤的配置即可:
- name: Use Node.js 16 uses: actions/setup-node@v2 with: node-version: '16'
修改后可直接删除原来的install npm步骤,部署流程可正常运行。注意提前确认你的Firebase Functions运行环境支持对应的Node.js版本即可。
方案2:降级本地锁文件版本
如果你必须保留Node 14的配置,可以将本地开发环境的npm降级到v6版本,然后重新执行npm install生成lockfileVersion@1的锁文件,提交到仓库后即可适配CI环境的默认npm版本,不需要额外安装最新npm。
方案3:优化现有npm安装步骤
如果你不想修改Node版本也不想修改锁文件,现有额外安装npm的步骤也可以正常使用,仅建议去掉working-directory配置,全局安装npm更合理:
- name: install latest npm run: npm i npm@latest -g
内容的提问来源于stack exchange,提问作者Tyler C
相关产品推荐
相关产品推荐

