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

如何在Node.js Google Cloud Run服务中引入本地依赖

解决Cloud Run部署时本地依赖MODULE_NOT_FOUND问题

你遇到的问题核心是:Cloud Run的构建环境只会打包当前部署目录下的文件,你用../../指向的上级目录文件不会被包含到构建镜像中,导致npm安装时找不到这些本地依赖。

以下是可行的解决方案:

方案1:调整项目结构(推荐)

把本地依赖文件移到Cloud Run服务目录的子文件夹中,确保它们在部署上下文范围内:

  1. 在你的Cloud Run服务目录下创建local-packages文件夹
  2. 将embeddings.js、opt.js等依赖文件移动到这个子文件夹中
  3. 修改package.json的依赖路径为当前目录相对路径:
"dependencies": {
    "express": "^4.17.1",
    "embeddings": "file:./local-packages/embeddings.js",
    "opt": "file:./local-packages/opt.js",
    "gpt": "file:./local-packages/gpt.js",
    "pinecone": "file:./local-packages/pinecone.js",
    "users": "file:./local-packages/users.js"
  }
  1. 在服务目录下执行gcloud run deploy命令,此时构建上下文会包含local-packages文件夹,npm能正常找到依赖。

方案2:直接在代码中引入文件(无需package.json配置)

如果不想移动文件,可直接在代码中用相对路径引入依赖,但必须确保部署时上级目录文件被包含到构建上下文中:

  1. 修改代码中的require语句为:
const embeddings = require('../../embeddings.js');
const opt = require('../../opt.js');
// 其他依赖同理
  1. 切换到项目根目录执行gcloud run deploy,并指定服务目录为参数:
gcloud run deploy --source ./services/my-cloud-run-service

这种方式会把整个项目根目录作为构建上下文,确保上级目录的依赖文件被打包进镜像。

方案3:使用自定义Dockerfile

如果需要更灵活的构建控制,可编写Dockerfile明确复制依赖文件:

FROM node:18-slim

WORKDIR /usr/src/app

# 复制package文件和本地依赖
COPY package*.json ./
COPY ../../embeddings.js ./embeddings.js
COPY ../../opt.js ./opt.js
COPY ../../gpt.js ./gpt.js
COPY ../../pinecone.js ./pinecone.js
COPY ../../users.js ./users.js
COPY index.js ./

RUN npm install

CMD ["node", "index.js"]

然后在服务目录下执行部署命令:

gcloud run deploy --dockerfile Dockerfile

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 22:43:14