Firebase云功能退出并显示代码16,什么是错误代码16,在哪里可以找到更多信息?

Jim*_*ane 2 firebase google-cloud-functions

我在firebase上的一项云功能退出,错误代码为16。

我试图谷歌,找出什么代码,但根本没有运气。

Error: Process exited with code 16
    at process.on.code (/srv/node_modules/@google-cloud/functions-framework/build/src/invoker.js:393:29)
    at process.emit (events.js:189:13)
    at process.EventEmitter.emit (domain.js:441:20)
    at process.exit (internal/process/per_thread.js:168:15)
    at logAndSendError (/srv/node_modules/@google-cloud/functions-framework/build/src/invoker.js:184:9)
    at process.on.err (/srv/node_modules/@google-cloud/functions-framework/build/src/invoker.js:390:13)
    at process.emit (events.js:189:13)
    at process.EventEmitter.emit (domain.js:441:20)
    at emitPromiseRejectionWarnings (internal/process/promises.js:119:20)
    at process._tickCallback (internal/process/next_tick.js:69:34)

Run Code Online (Sandbox Code Playgroud)

在哪里可以找到报告的错误代码,以便我理解为什么我的函数退出?

cDi*_*tch 9

可能的原因是云函数未正确终止。

firebase 文档是这样说的:

  • 通过返回 JavaScript Promise 来解析执行异步处理的函数(也称为“后台函数”)。

  • res.redirect()使用、res.send()或 终止 HTTP 函数res.end()

  • return使用;终止同步函数 陈述。

简而言之,请注意浮动承诺res和/或对or的多次调用response

我还看到这种Process exited with code 16情况同时发生:

Error: Could not load the default credentials. Browse to https://cloud.google.com/docs/authentication/getting-started for more information.
    at GoogleAuth.getApplicationDefaultAsync (/srv/functions/node_modules/google-auth-library/build/src/auth/googleauth.js:161:19)
    at process._tickCallback (internal/process/next_tick.js:68:7)
Run Code Online (Sandbox Code Playgroud)


Jim*_*ane 6

显然,经过调查,该错误表示类似:Headers already sent

我在代码中的某处response.send()带有标头,然后,我发送了另一个响应。

如果Firebase团队可以详细说明这些问题并提供一些文档而不是蒙住我们(根据我的理解),那将很棒


Glu*_*uck 5

函数框架的代码实际上在GoogleCloudPlatform/functions-framework-nodejs存储库中是公开的(虽然没有在任何地方做广告)。

特别是您可以在那里看到killInstance使用的情况,这是触发退出代码 16 的一个:

const killInstance = process.exit.bind(process, 16);

这些案例是(在撰写本文时):