You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 15:55:27