MacBook M1 执行npm全局安装gatsby-cli报E404错误的求助
问题根因
你遇到的404报错,本质是npm拉包的源配置错误——报错中的请求地址指向已经废弃的npm-registry-couchappGitHub仓库,并非npm官方公共源地址,因此才会出现找不到gulp-cli包的提示。该问题和M1芯片本身的安装兼容性无直接关联,多是之前手动配置错源、或是安装过第三方npm管理工具残留错误配置导致的。
分步解决操作
- 第一步:校验双账号的npm源配置
分别查询普通用户、root用户的实际生效拉包地址,避免漏改配置:
只要任意一条返回值不是npm config get registry sudo npm config get registryhttps://registry.npmjs.org/,就说明源配置存在错误。 - 第二步:修正全量账号的源地址
注意:使用sudo执行全局安装时,npm读取的是root账号的配置,不是当前登录普通用户的配置,只修改普通用户的设置完全不生效
分别对两个账号执行源地址设置:npm config set registry https://registry.npmjs.org/ sudo npm config set registry https://registry.npmjs.org/ - 第三步:清理本地npm缓存
错误的源拉取记录会存在本地缓存,不清理会反复触发之前的404报错:sudo npm cache clean --force - 第四步:核对M1架构适配环境
确认当前终端运行的是Arm架构原生Node.js,没有走Rosetta转译,避免安装时出现原生二进制依赖兼容问题:
执行node -p process.arch,返回arm64即为正确的原生环境;如果返回x64,需要卸载当前转译版Node.js,重装Arm架构原生版本后再继续操作。 - 第五步:重新执行Gatsby CLI全局安装
sudo npm install -g gatsby-cli
兜底排查
如果修正完源配置后依然报gulp-cli的404错误,说明本地npm配置残留了旧的自定义包地址映射。执行npm config list拉取全量配置,找到所有指向废弃GitHub仓库的自定义配置项,普通用户和root用户的对应配置都要删除(比如存在@gulp:registry这类指向旧仓库的配置时,执行npm config delete @gulp:registry、sudo npm config delete @gulp:registry清除残留),完成后重新执行缓存清理和安装步骤即可。
内容的提问来源于stack exchange,提问作者Kelum
相关产品推荐
相关产品推荐

