代码之家  ›  专栏  ›  技术社区  ›  phonemyatt

功能:emulator出错。分析函数触发器时出错

  •  0
  • phonemyatt  · 技术社区  · 6 年前

    我正在用typescript在现有项目中本地测试firebase函数。当我运行下面的命令时,我总是得到typeerror,即使我可以将其上载到firebase项目。该错误总是在typescript编译为js后发生

    firebase serve --only functions
    

    TypeError:无法读取未定义的属性“username” at对象。(C:\Users\phone\Desktop\VMS\mynewvm\u functions\functions\lib\email\index.js:8:52) at模块_编译(module.js:635:30) at对象。模块_扩展。。js(模块js:646:10) at模块。加载(模块js:554:32) 在tryModuleLoad(模块js:497:12) at功能。模块_加载(模块js:489:3) at模块。要求(模块js:579:17) 需要时(内部/模块js:11:18) at对象。(C:\Users\phone\Desktop\VMS\mynewvm\u functions\functions\lib\index.js:19:15) at模块_编译(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配置中获取。和I cd到functions文件夹并键入 'npm start' .我跑步的时候 'firebase serve --only functions' ,它不适用于最近的更改,因此在键入之前,请给出相同的错误 'npm开始' 将运行tsc和firebase shell,停止它(ctrl+c),然后键入 'firebase服务--仅函数' 再一次仅供参考,我使用firebase cli和typescript创建了当前的firebase functions项目。

    firebase cli - 3.18.4
    firebase functions - ^1.0.1
    firebase admin - 5.12.0
    @google-cloud/storage - 1.6
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   phonemyatt    6 年前

    经过长时间的测试,我决定将用户名、密码和令牌直接放在我的函数中进行本地测试,尽管我不太喜欢这个想法,所以我改回了函数。配置()。。当我部署到firebase时。感谢@Frank的回答

        2
  •  0
  •   Frank van Puffelen    6 年前

    没有调用内置配置参数 emailaccount ,看来是你自己定义的。

    本地环境不会自动包含这些变量。实际上,您必须在一个名为 runtimeconfig.json .显示了一种简单的方法 here :

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