【问题标题】:Node Canvas throwing error when running project运行项目时节点画布抛出错误
【发布时间】:2021-12-16 05:51:14
【问题描述】:

Node Canvas 在 m1 上不适合我

当我尝试运行我的项目时,我收到以下错误消息:

Error: dlopen(.../node_modules/canvas/build/Release/canvas.node, 0x0001): tried: '.../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)

已经这样做了:

brew install pkg-config cairo pango libpng jpeg giflib librsvg

xcode-select --install

npm i canvas

没有错误

不确定如何调试此问题,因为有人使用 Node Canvas 在 m1 笔记本电脑上工作,请帮忙。

【问题讨论】:

  • 解决了吗?使用 mongodb 遇到同样的问题

标签: node.js canvas apple-m1


【解决方案1】:

最重要的是确保您的 Node 可执行文件已针对 Apple Silicon 编译,这意味着有一个针对 darwin-arm64 的预构建二进制文件。您可以在此处查看哪些版本具有哪些二进制文件(以下页面包含 Node 版本 16.13.1 的二进制文件):https://nodejs.org/download/release/v16.13.1/。

Node v14 没有针对 darwin-arm64 的预构建二进制文件(请参阅 https://github.com/nodejs/node/issues/36161),因为它无法在 Apple Silicon 本地编译。

我使用volta (https://volta.sh/) 来管理我的 Node 版本,因此如果您使用 volta install node@16 安装 Node v16,然后运行 ​​npm i canvas,您应该会得到一个正确编译的 canvas.node 文件。

如果失败,请转到node_modules/canvas 并运行npm install --build-from-source,这将编译C++ 插件并输出正确的canvas.node。

您可以通过运行来检查:

file node_modules/canvas/build/Release/canvas.node
# outputs: node_modules/canvas/build/Release/canvas.node: Mach-O 64-bit bundle arm64

如果最后显示arm64,那么您就可以开始了。如果它仍然显示x86_64,那么就出了问题。

【讨论】:

    猜你喜欢
    • 2019-09-30
    • 2021-07-11
    • 1970-01-01
    • 2022-11-30
    • 1970-01-01
    • 2019-04-06
    • 1970-01-01
    • 1970-01-01
    • 2015-03-26
    相关资源
    最近更新 更多