Firebase Cloud Functions - 函数外部的 ENV 变量

问题描述 投票:0回答:1

我正在尝试在云函数定义之外使用

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 加载环境变量”。然而,它仅在函数运行时可用。

javascript node.js firebase google-cloud-functions dotenv
1个回答
0
投票

您所描述的是预期行为,无法更改。

在您的特定情况下,这意味着您不应在代码的全局范围内使用环境变量。相反,您可以在第一次调用函数时延迟初始化任何全局范围变量。

let llm;

exports.testCall = functions.https.onCall((data, context) => {
  if (llm === undefined) {
    llm = new ChatOpenAI({
      openAIApiKey: process.env.OPENAI_API_KEY,
    });
  }

  // use llm normally
});
© www.soinside.com 2019 - 2024. All rights reserved.