繁体   English   中英

在本地运行 Node test.js 时访问本地 Firebase 环境变量

[英]Accessing local Firebase Environment Variables when running Node test.js locally

我有以下简单的test.js

const functions = require('firebase-functions');
console.log(functions.config().supportgmail.email);

在运行node test.js之前,我已经完成了以下node test.js

  1. firebase functions:config:get > .runtimeconfig.json
  2. firebase emulators:start
  3. node test.js

运行node test.js ,出现以下错误并且环境变量未输出到控制台:

{"severity":"WARNING","message":"Warning, FIREBASE_CONFIG and GCLOUD_PROJECT environment variables are missing. 
Initializing firebase-admin will fail"}

为了使本地 Firebase 环境变量可访问,我还需要在test.js中做什么? 请注意,当我在本地运行整个 web app 项目时,访问本地环境变量没有问题,除非我使用node test.js独立运行 JS -- 我只想让我新创建的需要访问环境的函数变量在将其合并到我的应用程序项目之前起作用。 谢谢!

使用 Node v10 部署函数时会发生此错误(如果您未使用 Node 10,请告诉我)。 它是由 firebase 函数中的错误引起的。 Node 10 环境不再包含 GCLOUD_PROJECT。 作为解决方法,您可以将以下行添加到您的代码中:

process.env.GCLOUD_PROJECT = JSON.parse(process.env.FIREBASE_CONFIG).projectId

或者您可以降级到节点 8,直到此问题得到解决。

另外请尝试重新部署云功能。

另请查看有关此问题12的以下 GitHub 主题。

************ 更新 **************

根据以下消息:

您请求的“节点”版本“10”与您的全局版本“12”不匹配,如果不是,则该消息不是错误,它只是让您知道您的 package.json 声明了目标节点版本 10,但您正在使用您机器上的节点 12 进行仿真。 要消除该消息,请在您的机器上安装节点 10 而不是 12。 或相反亦然。

请确保引擎字段的package.json 文件使用的是哪个Node.js 版本

根据Firebase 官方文档,据说

Firebase SDK for Cloud Functions 2.0.0 and higher allows a selection of Node.js runtime

并且当您使用 Node.js 时,您的 Cloud Functions SDK 应该是 2.0.0 或更高版本,因此请按照以下步骤操作或查看官方文档以确保您安装了正确的 SDK:

  1. 如果您还没有将 SDK 更新到最新版本,请在函数文件夹中运行以下命令:

npm install firebase-functions@latest --save npm install firebase-admin@latest --save-exact

  1. 还将 Firebase CLI 更新到最新版本:

npm install -g firebase-tools

如果您希望使用 firebase serve 的本地函数模拟来获取环境变量,则需要遵循下一个文档

如果您使用自定义函数配置变量,请在运行 firebase serve 之前在项目的函数目录中运行以下命令。

firebase functions:config:get > .runtimeconfig.json

但是,如果您使用的是 Windows PowerShell,请将上述命令替换为:

firebase functions:config:get | ac .runtimeconfig.json

最后, Cloud Functions 官方文档中缺少并说明的要点是,当您在不带参数的情况下初始化 Firebase Admin SDK 时,会自动应用配置 请添加以下内容:

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();

let firebaseConfig = JSON.parse(process.env.FIREBASE_CONFIG);
let project = firebaseConfig.projectId;
console.log(project);

我希望它有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM