firebase函数:shell找不到自定义函数的配置变量

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (23)

我试图在本地测试我的云功能。我有一个自定义函数配置变量,所以我使用该命令firebase functions:config:get > .runtimeconfig.json生成一个runtimeconfig.json文件:

{
  "stripe": {
    "testkey": "someKey"
  }
}

然后我使用该命令firebase functions:shell启动模拟器,但它在我的终端中输出以下错误:

+  functions: Emulator started at http://localhost:5001
!  TypeError: Cannot read property 'testkey' of undefined
    at Object.<anonymous> (C:\Users\Jesper\intergun\functions\lib\index.js:14:52)
    at Module._compile (module.js:653:30)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)
    at Module.require (module.js:597:17)
    at require (internal/module.js:11:18)
    at C:\Users\Jesper\AppData\Roaming\nvm\v8.16.0\node_modules\firebase-tools\lib\emulator\functionsEmulatorRuntime.js:532:33
    at Generator.next (<anonymous>)
!  We were unable to load your functions code. (see above)
   - It appears your code is written in Typescript, which must be compiled before emulation.
   - You may be able to run "npm run build" in your functions directory to resolve this.

由于某种原因,它无法找到变量,并且它似乎认为代码是用TypeScript编写的,即使它指向生成的index.js文件。我试过跑,npm run build但结果是一样的。

我的顶部index.ts看起来像这样:

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
import 'firebase-functions';
import * as Stripe from 'stripe';

admin.initializeApp();
const stripe = new Stripe(functions.config().stripe.testkey);

我错过了什么?

提问于
用户回答回答于

我在这里找到了解决方案:https//github.com/firebase/firebase-tools/issues/711

要生成.runtimeconfig.json,文档(https://firebase.google.com/docs/functions/local-shell)表示firebase functions:config:get > .runtimeconfig.json如果您不使用Windows PowerShell(我不是),您应该使用该命令。但是,这会生成一个文件似乎是正确的,但显然有不可见的字符,不应该存在。相反,我使用Windows PowerShell命令:firebase functions:config:get | ac .runtimeconfig.json。这解决了这个问题。

扫码关注云+社区

领取腾讯云代金券