调用Google Cloud Function时构建环境变量未定义问题
Google Cloud Function 构建环境变量无法在运行时访问的问题解决
问题说明
我在Google Cloud Function中尝试调用构建环境变量,但始终返回undefined。打印整个process.env后,发现我的构建或运行时环境变量并未出现在输出中(我配置的构建环境变量包含OPENAI_API_KEY)。
云函数代码
const functions = require('@google-cloud/functions-framework'); const { OpenAI } = require("openai"); functions.http('sendToChat', async (req, res) => { console.log(process.env) const {messages, userPhone} = req.body; const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY }); const completion = await openai.chat.completions.create({ model: "gpt-4o-mini", messages: messages, }); res.send(completion.choices[0].message.content); });
process.env 日志输出
{ HOSTNAME: '<host-name>', LANGUAGE: 'en_US:en', PWD: '/workspace', FUNCTION_SIGNATURE_TYPE: 'cloudevent', PORT: '8080', CNB_STACK_ID: 'google.22', NODE_ENV: 'production', CNB_GROUP_ID: '<id>', HOME: '/home/cnb', LANG: 'en_US.UTF-8', SHLVL: '0', CNB_USER_ID: '1000', LD_LIBRARY_PATH: '/layers/google.nodejs.runtime/node/lib', LC_ALL: 'en_US.UTF-8', PATH: '<path>', FUNCTION_TARGET: 'sendToChat', _: 'node_modules/.bin/functions-framework' }
解决方法
- 区分构建与运行时环境变量:Google Cloud Function的构建环境变量仅在代码构建阶段(如安装依赖、编译代码)可用,运行时不会自动继承这些变量。你需要设置的是运行时环境变量,而非构建环境变量。
- 配置运行时环境变量步骤:
- 进入Google Cloud Console的目标云函数详情页
- 切换到「环境变量、网络和配置」标签页
- 在「运行时环境变量」区域添加
OPENAI_API_KEY及对应值 - 重新部署云函数
- 验证生效:重新部署后触发函数,检查
process.env日志,确认OPENAI_API_KEY已出现在输出中。
如果确实需要在构建阶段和运行时同时使用该变量,可通过cloudbuild.yaml配置将构建变量传递到运行时,但绝大多数场景下直接设置运行时环境变量即可解决问题。
内容的提问来源于stack exchange,提问作者Rushwin Jamdas
相关产品推荐
相关产品推荐

