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

构建Node应用部署至Google Cloud Functions时npm依赖缺失问题

解决Google Cloud Functions部署后缺失npm依赖的问题

问题根源在于Cloud Build的每个步骤运行在独立的容器环境中,第一个node:16容器内执行npm install生成的node_modules目录,不会自动传递到后续的cloud-sdk容器环境中,导致部署时依赖包未被包含。

以下是几种可行的解决方法:

方法一:在同一个容器内完成依赖安装与部署

修改cloudbuild.yaml,使用Cloud SDK镜像并在其中安装Node.js环境,随后依次执行依赖安装和部署命令,确保依赖和部署操作在同一环境中完成:

steps:
  - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
    entrypoint: 'bash'
    args:
      - '-c'
      - |
        apt-get update && apt-get install -y nodejs npm
        npm install
        gcloud beta functions deploy station-europe-north1 \
          --gen2 \
          --region=europe-north1 \
          --trigger-http \
          --runtime=nodejs16 \
          --entry-point=runTest

方法二:利用Cloud Build工作区共享依赖文件

Cloud Build默认会将源码目录作为共享工作区,调整步骤配置确保npm install生成的node_modules保留在工作区,供后续部署步骤使用:

steps:
  - name: 'node:16'
    entrypoint: 'npm'
    args: ['install']
    dir: '.'

  - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
    entrypoint: 'gcloud'
    args:
      - beta
      - functions
      - deploy
      - station-europe-north1
      - '--gen2'
      - '--region=europe-north1'
      - '--trigger-http'
      - '--runtime=nodejs16'
      - '--entry-point=runTest'
    dir: '.'

方法三:让部署命令自动安装依赖

如果没有私有npm包的需求,可直接移除Cloud Build中的npm install步骤,让gcloud functions deploy命令在部署时自动读取package.json并安装依赖,这种方式更简洁:

steps:
  - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
    entrypoint: 'gcloud'
    args:
      - beta
      - functions
      - deploy
      - station-europe-north1
      - '--gen2'
      - '--region=europe-north1'
      - '--trigger-http'
      - '--runtime=nodejs16'
      - '--entry-point=runTest'

内容的提问来源于stack exchange,提问作者pronngo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 04:01:15