what
新版的 Apple M1 是基于 arm 架构的,然而大部分的软件 和 npm 包都还没有适配 arm 架构,所以苹果公司就使用 Rosetta 来兼容 x86 架构的软件。
why
第一次使用 x86 软件的时候,系统会自动提示安装 Rosetta ,安装后直接运行软件即可。
然而,今天遇到一个非常奇怪的问题,在安装依赖的时候我发现无法安装 node-canvas
这个包,经过一系列的排查,我发现问题出在这里:
...
npm ERR! node-pre-gyp http 404 status code downloading tarball https://github.com/Automattic/node-canvas/releases/download/v2.7.0/canvas-v2.7.0-node-v88-darwin-unknown-arm64.tar.gz
...
无法找到 canvas-v2.7.0-node-v88-darwin-unknown-arm64.tar.gz
这个包,顺着 node-canvas 的 releases 发现,根本就没有发布这个包,只有 canvas-v2.7.0-node-v88-darwin-unknown-x64.tar.gz
,这个时候我突然意识到,当前是以 arm 架构运行的 terminal 和 npm,所以识别出来后,自动去寻找适合 arm 架构的包,然而并没有适配 arm 的包,所以就导致无法安装。
how
我顺着使用 x86 架构的软件的思路,我觉得既然软件可以移植到 M1 上,npm 肯定也是可以的,一定有某种方法,而且肯定与 Rosetta 有关。终于,想到办法了。
- 在应用程序中找到 terminal ,然后右键
显示简介
,发现有个选项使用Rosetta打开
- 打开一个 terminal,然后卸载 node ,再重新安装一次。(我是使用 nvm 安装的 node)
- 使用该版本的 node 安装依赖,发现成功了。
总结
简而言之就是安装依赖的时候,发现依赖不适用于 arm 架构的 M1,只能使用 x86 架构的依赖,所以需要借助于 Rosetta 去安装依赖。
作者: Kavience
本文链接: http://www.kavience.com/tools/rosetta-and-npm-under-apple-m1.html
转载请注明:《Apple M1 下的 Rosetta 与 Npm》转自 http://www.kavience.com/tools/rosetta-and-npm-under-apple-m1.html,原作者:Kavience
版权声明: 自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)