函数:模拟器出错。解析函数时发生错误触发

时间:2018-05-10 03:27:56

标签: firebase google-cloud-functions

我正在我的现有项目中使用typescript在本地测试firebase函数。当我运行以下命令时,即使我可以将其上传到firebase项目,我总是会遇到类型错误。在打字稿编译为js后,错误总是发生

firebase serve --only functions
  

TypeError:无法读取undefined的属性“username”       在对象。 (C:\ Users \用户电话\桌面\ VMS \ mynewvm_functions \功能\ lib中\电子邮件\ index.js:8:52)       在Module._compile(module.js:635:30)       at Object.Module._extensions..js(module.js:646:10)       在Module.load(module.js:554:32)       在tryModuleLoad(module.js:497:12)       在Function.Module._load(module.js:489:3)       在Module.require(module.js:579:17)       at require(internal / module.js:11:18)       在对象。 (C:\ Users \用户电话\桌面\ VMS \ mynewvm_functions \功能\ lib中\ index.js:19:15)       在Module._compile(module.js:635:30)

import * as functions from 'firebase-functions';
import * as nodemailer from 'nodemailer';
const accountname = functions.config().emailaccount.username;
const accountpassword = functions.config().emailaccount.password;
/* smtp configuration */

我已经在我的项目中设置了emailaccount,下面是我的代码。

firebase functions:config:set emailaccount.username="email@domain.com" 
emailaccount.password="mypassword"

请注意,上传到firebase功能时它工作正常,但在本地服务时却没有。我该怎么做才能让它在本地运作?

最后,我只是用实际值替换所有凭据,而不是从firebase配置获取。然后我cd到函数文件夹并输入'npm start'。它看起来像我运行'firebase serve --only functions'时,它不适用于最近的更改,所以给我相同的错误,直到我键入'npm start'运行tsc和firebase shell,停止它(ctrl + c)然后再次输入'firebase serve --only functions'。 Fyi,我使用firebase cli和typescript创建了我当前的firebase函数项目。

firebase cli - 3.18.4
firebase functions - ^1.0.1
firebase admin - 5.12.0
@google-cloud/storage - 1.6

2 个答案:

答案 0 :(得分:1)

经过长时间的测试,我决定将用户名,密码和令牌直接放在我的函数中进行本地测试,虽然我不是很喜欢这个想法,但我改回了functions.config()..当我部署到firebase。感谢@Frank的回答

答案 1 :(得分:0)

没有名为emailaccount的内置配置参数,因此您似乎自己定义了它。

本地环境不会自动包含这些变量。您实际上必须在名为runtimeconfig.json的文件中定义它们。显示here的一种简单方法是:

cd functions
firebase functions:config:get > .runtimeconfig.json