我有以下简单的test.js
:
const functions = require('firebase-functions');
console.log(functions.config().supportgmail.email);
在运行node test.js
:之前,我已经完成了以下操作
firebase functions:config:get > .runtimeconfig.json
firebase emulators:start
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应用程序项目时,访问本地环境变量没有问题,除非我使用node test.js
独立运行JS——我只想让我新创建的需要访问环境变量的函数在将其合并到我的应用程序项目中之前工作。谢谢
使用Node v10部署函数时会发生此错误(如果您没有使用Node 10,请告诉我(。这是由firebase函数中的一个错误引起的。Node 10环境不再包含GCLOUD_PROJECT。作为一种变通方法,您可以在代码中添加以下行:
process.env.GCLOUD_PROJECT = JSON.parse(process.env.FIREBASE_CONFIG).projectId
或者您可以降级到Node 8,直到该问题得到解决。
此外,请尝试重新部署云功能。
还请查看以下关于此问题1、2的GitHub线程。
************更新**************
根据以下消息:
您请求的"节点";版本";10〃;与您的全局版本不匹配";12〃,如果不是,则该消息不是错误——它只是让您知道您的package.json声明了10的目标节点版本,但您正在使用机器上的节点12进行仿真。若要清除该消息,请在您的计算机上安装节点10,而不是12。反之亦然。
请确保在engines字段中的package.json文件中使用的是哪个Node.js版本。
根据Firebase官方文件,
Firebase SDK for Cloud Functions 2.0.0 and higher allows a selection of Node.js runtime
由于您正在使用Node.js,您的云功能SDK应该是2.0.0或更高版本,因此请按照以下步骤操作或查看官方文档,以确保您安装了正确的SDK:
- 将SDK更新到最新版本。如果尚未更新,请在functions文件夹中运行以下操作:
npm安装firebase-functions@latest--保存npm安装firebase-admin@latest--保存准确的
- 同时将Firebase CLI更新到最新版本:
npm安装-g firebase工具
如果您希望使用firebase服务对函数进行本地评估以获取环境变量,则需要遵循下一个文档。
如果使用自定义函数配置变量,请运行之前在项目的functions目录中执行以下命令正在进行的firebase发球。
firebase functions:config:get > .runtimeconfig.json
但是,如果您使用的是Windows PowerShell,请将上面的命令替换为:
firebase functions:config:get | ac .runtimeconfig.json
最后,云功能官方文档中缺少并说明的要点是,当您在没有参数的情况下初始化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);
我希望它能有所帮助。