[英]Deploy Firebase Cloud-Function with Node Canvas fails on Mac M1
我刚买了一台新的 Mac M1,我正在尝试部署一个 Firebase 云 Function。它工作正常,只要我不包括节点 canvas 模块。
当我尝试部署时,出现以下错误:
Error: Error occurred while parsing your function triggers.
Error: dlopen(/Library/WebServer/Documents/inklay_web_cf/functions/node_modules/canvas/build/Release/canvas.node, 0x0001): tried: '/Library/WebServer/Documents/inklay_web_cf/functions/node_modules/canvas/build/Release/canvas.node' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')), '/usr/local/lib/canvas.node' (no such file), '/usr/lib/canvas.node' (no such file)
at tryImporting (pkg/prelude/bootstrap.js:1736:37)
at process.dlopen (pkg/prelude/bootstrap.js:1762:5)
at Object.Module._extensions..node (internal/modules/cjs/loader.js:1186:18)
at Module.load (internal/modules/cjs/loader.js:984:32)
at Function.Module._load (internal/modules/cjs/loader.js:877:14)
at Module.require (internal/modules/cjs/loader.js:1024:19)
at Module.require (pkg/prelude/bootstrap.js:1338:31)
at require (internal/modules/cjs/helpers.js:72:18)
at Object.<anonymous> (/Library/WebServer/Documents/inklay_web_cf/functions/node_modules/canvas/lib/bindings.js:3:18)
at Module._compile (internal/modules/cjs/loader.js:1136:30)
vonnielu@lukass-macbook-pro-1 functions % node-gyp rebuild
zsh: command not found: node-gyp
看来,Firebase Cloud Function 不喜欢这个架构。 但是我能做什么? 非常欢迎任何帮助。
节点:v16.14.0 Firebase 工具:10.2.0 Mac OS Monterey:12.2.1 Apple M1 Max
我通过以下方式解决了问题:
将节点版本降级到 v12.22.10
删除我的项目文件夹中的所有 node_modules
在 vs 代码中运行 rosetta 终端
npm 安装
删除我的云功能(部署所有功能取消注释)
部署我的云功能(firebase 部署)
迟到的答案:面对与 Apple M1 芯片(arm64 架构)相同类型的问题,我发现了为什么涉及我的节点版本:
我现在正在寻找 2 个解决方案,要么我在 x64 中使用以前的节点,要么我在我的 package.json(干净的方式,恕我直言)中系统地找到如何为 arm64/本地 arch 获取 canvas。 (第三种方式:x64 上的新节点但也不干净)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.