开发者问题收集

sudo npm install 给我一个访问被拒绝

2017-11-23
10345

我正在使用 ionic,并且已经通过 git 将我的项目从 machine1 提取到 machine2。

我的 ionic 信息给了我这个:

[ERROR] Error with ./node_modules/@ionic/app-scripts/package.json file: FILE_NOT_FOUND

cli packages: (/usr/local/lib/node_modules)

@ionic/cli-utils  : 1.19.0
ionic (Ionic CLI) : 3.19.0

local packages:

@ionic/app-scripts : not installed
Ionic Framework    : ionic-angular 3.7.1

System:

Node : v8.9.1
npm  : 5.5.1
OS   : macOS High Sierra

Misc:

backend : pro

当我运行 sudo npm install 时,我得到了以下信息:

npm WARN checkPermissions Missing write access to /Users/gerald/Documents/ionic/yesterdayweather/node_modules npm WARN checkPermissions Missing write access to /Users/gerald/Documents/ionic/yesterdayweather/node_modules/@ionic

And then

gyp ERR! configure error gyp ERR! stack Error: EACCES: permission denied, mkdir '/Users/gerald/Documents/ionic/yesterdayweather/node_modules/node-sass/build' gyp ERR! System Darwin 17.2.0 gyp ERR! command "/usr/local/Cellar/node/8.9.1/bin/node" "/Users/gerald/Documents/ionic/yesterdayweather/node_modules/node-gyp/bin/nod e-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library=" gyp ERR! cwd /Users/gerald/Documents/ionic/yesterdayweather/node_modules/node-sass gyp ERR! node -v v8.9.1 gyp ERR! node-gyp -v v3.6.2 gyp ERR! not ok Build failed with error code: 1 npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! [email protected] postinstall: node scripts/build.js npm ERR! Exit status 1

我尝试了以下解决方案 1 和 3。

基本上我认为我已经以 pkg 方式安装了 node,所以我删除了它并使用 brew 安装了它,所以实际上我应该没有这个问题。

但我还是尝试了选项 1,它仍然不起作用。

有什么想法吗?

谢谢!

2个回答

似乎有一个脚本正在尝试写入文件,npm 在以 root 身份运行时默认拒绝此操作。您可以在命令后面放置 --unsafe-perm 来禁用此保护措施。

您也不应该使用 sudo 运行 npm install,因为这不是必需的。 只有在使用 -g 标志全局安装模块时才应该使用 sudo。

2019 EDIT: 毋庸置疑,禁用这样的安全保护措施可能非常危险,因为您给了脚本自由通行证来做它想做的任何事情。最好不要同时使用 sudo 和 npm,即使在全局安装模块时也是如此。如果您在使用 npm 时遇到访问问题,请 使用版本管理器 更改 npm 的默认目录

Sjoerd Dal
2017-11-23

您不应使用 sudo npm install 。清理您的环境(请参阅我的回答 此处 中的更多内容),然后仅运行 npm install

Ryan Shillington
2018-04-12