迁移Shopify应用至CLI 3.0执行npm install报ngrok EACCES错误
Shopify CLI 3.0迁移时@shopify/ngrok安装EACCES权限报错解决
问题背景
参照官方迁移指南将测试Shopify应用迁移至Shopify CLI 3.0,当前运行环境:
- 操作系统:macOS Catalina 10.15.17
- Node版本:16.15.1
- Ruby版本:2.6.3p62
- Shopify CLI版本:2.19.0
按照指南要求将所有代码迁移至/web目录,依次创建web/shopify.web.toml、shopify.app.toml、package.json配置文件后,执行sudo npm install命令安装依赖,安装过程中报错,核心错误为@shopify/ngrok模块下载二进制文件时触发EACCES权限拒绝,当前用户无~/.ngrok目录写入权限,多次重试均失败。
核心报错片段:
npm ERR! code 1 npm ERR! path /Users/davide/shopify-v1/node_modules/@shopify/ngrok npm ERR! command failed npm ERR! command sh -c node ./postinstall.js npm ERR! ngrok - downloading binary ngrok-v3-stable-darwin-amd64.zip npm ERR! ngrok - error storing binary to local file [Error: EACCES: permission denied, open '/Users/davide/.ngrok/xxx.zip'] { npm ERR! errno: -13, npm ERR! code: 'EACCES', npm ERR! syscall: 'open', npm ERR! path: '/Users/davide/.ngrok/xxx.zip' npm ERR! }
故障原因
使用sudo执行npm安装时,依赖的postinstall脚本会以root身份运行,首次创建~/.ngrok目录时会将目录所有者设置为root,后续普通用户身份的进程无法向该目录写入文件,触发权限拒绝。
解决步骤
- 修复
~/.ngrok目录权限,将目录所有者改回当前登录用户:# 如果~/.ngrok目录不存在先手动创建 mkdir -p ~/.ngrok sudo chown -R $(whoami) ~/.ngrok - 清理之前安装失败产生的残留文件,避免缓存或半安装依赖导致异常:
rm -rf node_modules package-lock.json - 切换到当前用户身份重新执行依赖安装,禁止使用sudo执行npm项目内依赖安装:
npm install
补充:如果后续安装npm全局包也频繁遇到权限问题,优先调整npm全局安装目录的权限归属到当前用户,不要通过sudo执行npm命令规避权限问题,否则会反复出现同类目录权限异常。
内容的提问来源于stack exchange,提问作者Davide Iandoli
相关产品推荐
相关产品推荐

