[英]Node Canvas throwing error when running project
节点 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 笔记本电脑上工作,请帮忙。
最重要的是确保您的 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。
I use volta
( https://volta.sh/ ) to manage my Node versions, so if you install Node v16 with volta install node@16
and then run npm i canvas
, you should get a correctly compiled canvas.node
file.
If that fails, go to node_modules/canvas
and run npm install --build-from-source
, which will compile the C++ addon and output the corect 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
,那么你对 go 很好。 如果它仍然显示x86_64
,那么就出了问题。
我使用npm install --build-from-source
。 这行得通!
但是有新的错误
dlopen(.../node_modules/canvas/build/Release/canvas.node,0x0001):在平面命名空间“_cairo_fill”中找不到符号
在npm install --build-from-source
之后我遇到了一个新问题
dlopen(.../node_modules/canvas/build/Release/canvas.node,0x0001):在平面命名空间“_cairo_fill”中找不到符号
有人修过这个吗?
有什么解决方案吗?
dlopen(.../node_modules/canvas/build/Release/canvas.node,0x0001):在平面命名空间“_cairo_fill”中找不到符号
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.