Cloud Functions部署失败:“函数在加载用户代码时失败。错误消息:无法加载文件lib / index.js中的代码。”

时间:2019-06-12 23:13:38

标签: firebase google-cloud-functions firebase-cli

我将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)

我该如何解决?

2 个答案:

答案 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,就可以了