调试firebase云功能

时间:2017-12-03 16:44:06

标签: node.js firebase visual-studio-code google-cloud-functions

如何使用visual studio代码 firebase-database 触发函数进行调试? 我尝试了模拟器,但是当我调用它时出现错误

select 
    R.ReviewID, 
    STUFF((select distinct ',' + FirstName 
           from Users 
           where UserID = RC.ConsultantID 
           FOR XML PATH ('')), 1, 1, '') AS consultantlist
from 
    [Reviews] R, [ReviewConsultants] RC 
where 
    R.ReviewID = RC.ReviewID  
group by 
    R.ReviewID;

这段代码我想调试

functions debug myMethod

C:\functions\functions>functions debug createUserChat
ERROR: Error: Function myMethod in location us-central1 in project myProject does not exist
at C:\Users\Dev\AppData\Roaming\npm\node_modules\@google-cloud\functions-emulator\node_modules\grpc\src\client.js:554:15

这是我的启动文件

require('@google-cloud/debug-agent').start({ allowExpressions: true });;

const functions = require('firebase-functions'),
        admin = require('firebase-admin'),
        logging = require('@google-cloud/logging')();
        admin.initializeApp(functions.config().firebase);

exports.myMethod= functions.database.ref('Tasks/{taskID}/taskStatus').onUpdate(event =>{
       // do sth.
});

3 个答案:

答案 0 :(得分:3)

debug-agent仅用于远程调试。如果要在本地调试功能,请使用Cloud Functions Emulator。

https://cloud.google.com/functions/docs/emulator

答案 1 :(得分:1)

您可以使用Firebase函数1.0使其在Visual Studio代码上运行,而无需更改功能代码上的任何内容。 你的发布配置似乎是正确的......

在运行functions deploy命令时,您基本上只需要正确设置FIREBASE_CONFIG环境变量。 喜欢的东西(别忘了逃避"字符):

FIREBASE_CONFIG="{\"databaseURL\":\"https://YOUR-FIREBASE-PROJECT.firebaseio.com\",\"storageBucket\":\"YOUR-FIREBASE-PROJECT.appspot.com\",\"projectId\":\"YOUR-FIREBASE-PROJECT\"}
functions deploy --trigger-http --timeout 600s FUNCTION_NAME

这适用于Firebase Functions 1.0,因为在新版本Firebase函数从环境中读取它的配置(https://firebase.google.com/docs/functions/beta-v1-diff#new_initialization_syntax_for_firebase_admin

之后,您只需正常运行functions debug FUNCTION_NAME [--port]即可启动功能调试程序并运行“附加”功能。 VS Code配置。

我写了一些关于更多细节和图像的教程: https://medium.com/@mwebler/debugging-firebase-functions-with-vs-code-3afab528bb36

答案 2 :(得分:0)

尝试:ndb firebase serve

这将打开一个带有调试工具的特定Chrome浏览器,并且对所有子进程进行检测可能会有点慢,因此请花一些时间。一旦运行,它将达到调试器的断点,等等。