GitLab CI/CD安装firebase-tools遇npm ERR!错误求助
GitLab CI/CD部署Ionic应用时安装firebase-tools失败
我正尝试将基于Angular的Ionic应用集成到GitLab CI/CD中,但部署任务每次执行都会失败。流水线执行到npm config set unsafe-perm true前均无问题,在执行npm i -g firebase-tools安装firebase工具时,出现如下错误:
2305 npm timing command:i Completed in 24044ms 2306 npm ERR! code 12307npm ERR! path /root/.nvm/versions/node/v16.18.0/lib/node_modules/firebase-tools/node_modules/protobufjs 2308 npm ERR! command failed 2309 npm ERR! command sh -c -- node scripts/postinstall 2310 npm ERR! internal/modules/cjs/loader.js:638 2311 npm ERR! throw err; 2312 npm ERR! ^ 2313 npm ERR! 2314 npm ERR! Error: Cannot find module '/root/.nvm/versions/node/v16.18.0/lib/node_modules/firebase-tools/node_modules/protobufjs/scripts/postinstall' 2315 npm ERR! at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15) 2316 npm ERR! at Function.Module._load (internal/modules/cjs/loader.js:562:25) 2317 npm ERR! at Function.Module.runMain (internal/modules/cjs/loader.js:831:12) 2318 npm ERR! at startup (internal/bootstrap/node.js:283:19) 2319 npm ERR! at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3) 2320 npm timing npm Completed in 24194ms 2321 npm ERR! A complete log of this run can be found in: 2322 npm ERR! /root/.npm/_logs/2022-10-27T00_16_16_747Z-debug-0.log 2324 Cleaning up project directory and file based variables00:01 2326 ERROR: Job failed: exit code 1
我的GitLab CI配置
全局配置与前置脚本
stages: - build - deploy default: tags: - nodejs before_script: - node --version - curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash - export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")" - [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" - nvm ls-remote - nvm install v16.18.0 - node --version
构建任务
build-webapp: stage: build script: - cd shareloc #进入项目目录 - npm i -silent - npm i @ionic/cli --silent - npx ionic build --prod - npm run lint # - npm run run-e2e-tests artifacts: expire_in: 10 mins paths: - shareloc/www/
部署任务
deploy-webapp: stage: deploy script: - cd shareloc #进入项目目录 - npm config set unsafe-perm true # - npm install --unsafe-perm -g firebase-tools - npm i -g firebase-tools - npx firebase deploy --token $FIREBASE_TOKEN only: - master
技术栈
- Ionic 6.20.3
- Node 16.18.0
- Firebase
解决建议
改用本地安装firebase-tools
全局安装易出现权限或依赖路径问题,建议在项目本地安装:deploy-webapp: stage: deploy script: - cd shareloc - npm install firebase-tools --save-dev - npx firebase deploy --token $FIREBASE_TOKEN only: - master还能复用构建阶段的依赖缓存,提升效率。
优化nvm安装流程
每个CI Job是独立容器,无需每次重新安装nvm,调整脚本减少重复操作:before_script: - export NVM_DIR="$HOME/.nvm" - source "$NVM_DIR/nvm.sh" || (curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash && source "$NVM_DIR/nvm.sh") - nvm install v16.18.0 - node --version清理npm缓存
缓存损坏可能导致依赖安装失败,部署前添加缓存清理命令:deploy-webapp: stage: deploy script: - cd shareloc - npm cache clean --force - npm config set unsafe-perm true - npm i -g firebase-tools - npx firebase deploy --token $FIREBASE_TOKEN only: - master指定兼容版本的firebase-tools
最新版可能与Node 16存在兼容性问题,尝试安装验证过的版本:npm i -g firebase-tools@11.19.0
内容的提问来源于stack exchange,提问作者Soniix
相关产品推荐
相关产品推荐

