@
allele 鉴于楼主还没有回答我,我先自己回答一下我自己,以便后面搜到这个帖子的人可以看到。研究之后发现流程大概是这样的。
m1 原生的 node 版本是 15,根据这个 issue (
https://github.com/Automattic/node-canvas/issues/1688 ),node15 没有发布 canvas 的二进制版本。所以根据它的指示(
https://github.com/Automattic/node-canvas#compiling )要从源码编译。
但是还没完,如果你的 homebrew 也是 m1 原生的,那么 homebrew 会安装在 /opt/homebrew 下。而 brew install 的东西都会在 /opt/homebrew/Cellar/下,不会软链接到 /usr/local/include 下。而 node-gyp 去编译的时候,本质上还是用 clang 去编译,找不到头文件,所以会报一个“fatal error: 'jpeglib.h' file not found”。解决的办法就是把 /opt/homebrew/Cellar/加到 clang 的 include path 里。我的做法是在~/.zshrc 中加入一行“export CPLUS_INCLUDE_PATH=/opt/homebrew/include”。这样这个问题就解决了。
但是由于 npm 的版本是 7,在最后 npm run dev 的时候会因为没有 process.env.npm_config_argv (
https://github.com/npm/cli/issues/1995)又报错。最后可能需要根据自己的需要去修改配置文件。至此,项目是可以正常打开的。但是后面有没有别的问题还不得而知。