NodeJS 如何使用Firebase Cloud Functions检测环境是开发环境还是生产环境?

5vf7fwbs  于 2023-04-05  发布在  Node.js
关注(0)|答案(3)|浏览(133)

如何使用Firebase Cloud Functions检测我的服务器环境是开发环境还是生产环境?
我需要这样的东西:

if (process.env.NODE_ENV === 'development') {

   // DO STUFF SPECIFIC TO DEV ENVIRONMENT

}
else if (process.env.NODE_ENV === 'production') {

   // DO STUFF SPECIFIC TO PRODUCTION ENVIRONMENT

}
eqzww0vc

eqzww0vc1#

process.env.FUNCTIONS_EMULATOR

在firebase函数项目的process.env中,有一个名为FUNCTIONS_EMULATOR的布尔变量,它指示进程是在模拟器上运行还是在服务器上运行。
这足以确定环境是开发环境还是生产环境。

process.env.FUNCTIONS_EMULATOR === true

Obs:在某些环境中,变量可能是String**'true'而不是Booleantrue**

hmmo2u0o

hmmo2u0o2#

你可以依赖process.env

截至2020年7月28日和package.json

"dependencies": {
    "firebase-admin": "^8.10.0",
    "firebase-functions": "^3.6.1"
},

如果您使用Firebase启动应用程序

一米一分一秒

process.env将具有如下属性

"FUNCTIONS_EMULATOR": "true",
"FIRESTORE_EMULATOR_HOST": "0.0.0.0:5002",
"PUBSUB_EMULATOR_HOST": "localhost:8085"
"FIREBASE_AUTH_EMULATOR_HOST": "0.0.0.0:9099"

如果您使用Firebase启动应用程序

firebase emulators:start --only functions

那么process.env将具有如下属性

"FUNCTIONS_EMULATOR": "true",

用例

基于process.env,你可以编写firebase.function来预填充你的firestore模拟器(不是生产firestore)!

代码示例

export const prepopulateFirestoreEmulator = functions.https.onRequest(
  (request, response) => {
    if (process.env.FUNCTIONS_EMULATOR && process.env.FIRESTORE_EMULATOR_HOST) {
      // TODO: prepopulate firestore emulator from 'yourproject/src/sample_data.json
      response.send('Prepopulated firestore with sample_data.json!');
    } else {
      response.send(
        "Do not populate production firestore with sample_data.json"
      );
    }
  }
);
2ekbmq32

2ekbmq323#

所有Google Cloud项目都只是项目,除了您指定其用途的方式。由于Cloud Functions无法知道dev和prod之间的区别,因此您需要检查项目的名称,因为这是环境中唯一会更改的内容。使用自动填充的env变量中的process.env.GCLOUD_PROJECT
这里的其他答案似乎是在假设这个问题是关于本地开发的,实际上不是。但这并不能帮助您确定基础项目是用于开发还是用于生产(或其他目的)。在模拟器中运行的某些代码仍然很有可能只对底层项目产生不必要的影响,强烈建议为不同的部署运行和隔离不同的项目,这样一个项目中的更改就不会影响到另一个项目。

相关问题