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

Posted

技术标签:

【中文标题】Cloud Functions 部署失败:“加载用户代码时函数失败。错误消息:无法加载文件 lib/index.js 中的代码。”【英文标题】:Cloud Functions deployment fails: "Function failed on loading user code. Error message: Code in file lib/index.js can't be loaded." 【发布时间】:2019-10-27 12:20:54 【问题描述】:

我将我的 firebase-functions 模块升级到 3.0.1。现在,当我部署 Cloud Functions 时,我收到警告消息:

⚠ 函数:将函数部署到已弃用的 Node 6 运行时。 Node 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)

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

过去,节点 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不支持。

【讨论】:

ecmaVersion 增加到 8 会有帮助 清晰的解释和完美的解决方案。谢谢 使用更高节点的引擎会有所帮助。谢谢

以上是关于Cloud Functions 部署失败:“加载用户代码时函数失败。错误消息:无法加载文件 lib/index.js 中的代码。”的主要内容,如果未能解决你的问题,请参考以下文章

如何为 Firebase 取消部署 Cloud Functions?

Cloud Functions Firebase CLI 预部署错误(打字稿)

Google Cloud Functions 部署:EROFS:只读文件系统

Google Cloud Functions 部署问题

Firebase Cloud Functions 部署错误 - 超出配额

使用TensorFlow作为依赖项部署Google Cloud Functions