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

根据我在一些论坛上看到的样子,sudo就是为什么我在运行sudo ionic emulate ios时候出现错误。在这篇文章中, 新增了离子 – 无法在El Capitan上为ios(9)创build,而sudo离子是必需的,不推荐使用npmconf 。 (我正在运行El Capitan btw)。

每当我需要使用离子,npm或cordova命令时,我总是必须把sudo放在它的前面,否则我会得到一个“bash command not found”的错误。 我试图使用这个修复https://www.npmjs.com/package/npm-sudo-fix,但它不工作。 这是在日志中发生的事情:

Dylans-MBP:离子项目Dylan $ sudo npm install -g npm-sudo -fix密码:/ 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:没有这样的文件或目录

最后想出了一个解决scheme,通过玩权限! 希望我没有填满任何东西。 (我是一个terminalnoob btw。)无论如何,这是解决scheme。

在terminal运行这个代码(你可能会也可能不需要先运行cd ..

 sudo chown -R $USER /usr/local/ 

这改变了本地文件夹内所有东西的权限(因此-R是recursion的)。 (我在离子论坛的某个地方发现了这条线)。

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

 sudo npm install -g cordova sudo npm install -g ionic 

无论如何,我这样做后,我可以键入ionic ,不会有任何错误。 如果我运行cordova我在terminal得到这个。

 /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. 

我做了什么来解决这个问题是(打开一个新的terminal窗口后):

 sudo chown -R $USER Dylan 

(Dylan是我的用户文件夹,用你自己的文件夹来replace它,而且,在运行这个命令行之前,你可能需要做一个cd ..然后修改那个configuration文件的权限,现在运行cordova没有错误!回来,所以你必须再次运行该代码行。

希望这有助于某人!