我正在尝试在云函数定义之外使用
process.env
值,但是当我不在云函数内部使用变量时,它只会变得undefined
。
functions/.env
OPENAI_API_KEY=MY_API_KEY
functions/index.js
const functions = require("firebase-functions");
const admin = require("firebase-admin");
const { ChatOpenAI } = require("@langchain/openai");
console.log(process.env.OPENAI_API_KEY); // undefined
const llm = new ChatOpenAI({
openAIApiKey: process.env.OPENAI_API_KEY, // undefined
});
exports.testCall = functions.https.onCall((data, context) => {
console.log(process.env.OPENAI_API_KEY); // defined with proper value
});
我是 firebase 和云函数的新手,所以也许有某种我不理解的范例,但我对如何在函数之外使用 env 变量感到困惑。
当我启动 Firebase 模拟器时,它显示“已从 .env 加载环境变量”。然而,它仅在函数运行时可用。
您所描述的是预期行为,无法更改。
在您的特定情况下,这意味着您不应在代码的全局范围内使用环境变量。相反,您可以在第一次调用函数时延迟初始化任何全局范围变量。
let llm;
exports.testCall = functions.https.onCall((data, context) => {
if (llm === undefined) {
llm = new ChatOpenAI({
openAIApiKey: process.env.OPENAI_API_KEY,
});
}
// use llm normally
});