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:只读文件系统