Ionic,npm和cordova命令都需要sudo才能工作

Dyl*_*guy 6 bash node.js npm cordova ionic-framework

sudo,通过我在一些论坛上看到的外观,为什么我sudo ionic emulate ios在这篇文章中运行时出现错误新的离子 - 无法在El Capitan上为ios(9)构建,并且需要sudo ionic,不推荐使用npmconf.(我正在运行El Capitan btw).

每当我需要使用离子,npm或cordova命令时,我总是要放在sudo它前面,否则我会收到"bash command not found"错误.我试图使用此修复程序https://www.npmjs.com/package/npm-sudo-fix但它不起作用.这是日志中发生的事情:

Dylans-MBP:Ionic Projects Dylan $ sudo npm install -g npm-sudo-fix
Password:
/usr/local/bin/npm-sudo-fix -> /usr/local/lib/node_modules/npm-sudo-fix/index.js
npm-sudo-fix@0.1.3 /usr/local/lib/node_modules/npm-sudo-fix
??? spawny@0.0.1 (cmdify@0.0.4)
Dylans-MBP:Ionic Projects Dylan$ sudo npm-sudo-fix
chown: /users/root/.npm: No such file or directory
Run Code Online (Sandbox Code Playgroud)

Dyl*_*guy 14

编辑(2018年8月28日):

多年前我写这篇文章并回答我对终端不太熟悉的问题.既然我更有经验,我可以推荐更好的解决方案.避免不必要的sudo使用是一种好习惯.

我认为问题是由安装程序从节点JS网站安装节点JS引起的.这个版本的节点JS似乎以root身份在文件系统中编写各种文件,可能(并且不必要地)导致全局包需要安装root权限.

理想的解决方案是从您的机器上完全删除从网站上的节点JS安装程序安装的节点JS(请参阅https://stackabuse.com/how-to-uninstall-node-js-from-mac- osx /).然后从命令行包管理器安装节点,例如homebrew.


原答案(2016)

终于通过玩权限想出了一个解决方案!希望我没有填充任何东西.(我是一个终端noob btw.)无论如何,这是解决方案.

在终端中运行此代码(您可能需要也可能不必先运行cd ..)

sudo chown -R $USER /usr/local/
Run Code Online (Sandbox Code Playgroud)

这会更改本地文件夹中每个内容的权限(因此-R这意味着递归).(我在离子论坛的某个地方发现了这条线).

现在,你必须重新安装cordova和离子

sudo npm install -g cordova
sudo npm install -g ionic
Run Code Online (Sandbox Code Playgroud)

无论如何,对我来说,在我这样做之后,我可以输入ionic并且不会出现任何错误.如果我跑,我会在终端得到这个cordova.

/usr/local/lib/node_modules/cordova/node_modules/update-notifier/node_modules/configstore/index.js:53
                throw err;
                ^

Error: EACCES: permission denied, open '/Users/Dylan/.config/configstore/update-notifier-cordova.json'
You don't have access to this file.
Run Code Online (Sandbox Code Playgroud)

我做的是解决这个问题(打开一个新的终端窗口后):

sudo chown -R $USER Dylan
Run Code Online (Sandbox Code Playgroud)

(Dylan是我的用户文件夹;用你的用户文件夹替换它.另外,你可能必须cd ..在运行该行之前做一个修复该配置文件的权限.现在运行cordova没有错误!Woot!那个错误可能会回来,所以你必须再次运行该行代码.

希望这有助于某人!

  • 这个答案最终帮助了我,但有点喷雾和祈祷.对我来说更精确的方法是更新Cordova`packages`文件夹的权限.例如:`sudo chown -R $ USER/Users/<username> /.cordova/lib/npm_cache/cordova-ios/<version>/package /` (3认同)