我将firebase-functions模块升级到3.0.1。现在,当我部署Cloud Functions时,会收到警告消息:
⚠函数:不建议将函数部署到Node 6运行时。节点8可用并且是推荐的运行时。
然后,部署因以下原因而失败:
Function failed on loading user code. Error message: Code in file lib/index.js can't be loaded.
Is there a syntax error in your code?
Detailed stack trace: /user_code/node_modules/firebase-functions/lib/providers/https.js:282
const func = async (req, res) => {
^
SyntaxError: Unexpected token (
at createScript (vm.js:56:10)
at Object.runInThisContext (vm.js:97:10)
at Module._compile (module.js:549:28)
at Object.Module._extensions..js (module.js:586:10)
at Module.load (module.js:494:32)
at tryModuleLoad (module.js:453:12)
at Function.Module._load (module.js:445:3)
at Module.require (module.js:504:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/user_code/node_modules/firebase-functions/lib/index.js:39:15)
我该如何解决?
答案 0 :(得分:7)
过去,节点6是默认的目标运行时。现在,节点6已过期LTS(长期支持)。在CLI版本6.8.0中,不建议使用节点6,因此建议您将节点8定位为部署对象。现在,从firebase-functions@3.0.0开始,对节点6的支持已被完全删除,您必须在package.json中显式地将节点8作为目标:
{
// other configurations here…
"dependencies": {
},
// Add an “engines” child to choose a node version, here it’s node 8.
"engines": {
"node": "8"
}
}
此版本中的另一个相关更改是对firebase-admin 8.x的依赖性,该依赖性也删除了对节点6的支持。
错误消息本身表明无法识别关键字async
,节点6不支持该关键字。
答案 1 :(得分:1)
如果我使用节点版本12,并在package.json中提到节点js 8,就可以了