在mac 10.7.2上安装coffeescript时出错

Anc*_*nia 9 macos install node.js coffeescript npm

Node和npm都已安装并且是最新的,但在尝试安装coffeescript时仍然遇到此错误.我还是编程的新手,所以任何建议都会非常感激.

test-macbook:~ Test$ npm -v
1.1.0-3
test-macbook:~ Test$ node -v
v0.6.8
test-macbook:~ Test$ npm install -g coffee-script
npm http GET https://registry.npmjs.org/coffee-script
npm http 304 https://registry.npmjs.org/coffee-script
npm ERR! Could not create /usr/local/lib/node_modules/___coffee-script.npm
npm ERR! error installing coffee-script@1.2.0

npm ERR! Error: EACCES, permission denied '/usr/local/lib/node_modules/___coffee-script.npm'
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.
npm ERR! 
npm ERR! System Darwin 11.2.0
npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "coffee-script"
npm ERR! cwd /Users/Dylan
npm ERR! node -v v0.6.8
npm ERR! npm -v 1.1.0-3
npm ERR! path /usr/local/lib/node_modules/___coffee-script.npm
npm ERR! code EACCES
npm ERR! message EACCES, permission denied '/usr/local/lib/node_modules/___coffee-script.npm'
npm ERR! errno {}
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/Dylan/npm-debug.log
npm not ok
Run Code Online (Sandbox Code Playgroud)

Tim*_*aub 13

遵循nmp作者Isaac Z. Schlueter 的建议:

我强烈建议你不要用sudo进行包管理!

而不是sudo npm install ...你可以改变你的/usr/local目录的权限:

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

完成这一次后,你应该能够npm install ...(没有sudo).


小智 9

我意识到这是一个较旧的线程,但我只是碰到了这个并希望更新最后的答案.

更改整个/ usr/local目录的所有者是这个问题的可怕答案.完全没有理由你应该这样做.

如果您查看来自npm的错误消息,它将被拒绝对/ usr/local/lib/node_modules /上的写权限/我知道在OS X Mavericks上安装node和npm后,其默认所有者是不存在的用户.

0 drwxr-xr-x   3 24561        wheel     102 Jan 23 14:17 node_modules
Run Code Online (Sandbox Code Playgroud)

如果您只是在本地开发计算机上运行node/npm,只需将node_modules文件夹的所有者更改为您的用户:

sudo chown -R yourusername /usr/local/lib/node_modules
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用不带sudo的npm安装模块,而不必更改/ usr/lib的所有者,因为它应该是.

  • `sudo chown -R $ USER/usr/local/lib/node_modules`避免了用户意外输入错误用户名的问题. (2认同)

mu *_*ort 8

错误消息非常清楚:

npm ERR! Error: EACCES, permission denied '/usr/local/lib/node_modules/___coffee-script.npm'
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.
Run Code Online (Sandbox Code Playgroud)

您无法安装它,/usr/local/lib/node_modules因为您没有必要的权限.尝试使用sudo:

dylan-hermans-macbook:~ sudo npm install -g coffee-script
Run Code Online (Sandbox Code Playgroud)

npm作者建议不要使用,sudo因为包可以运行任意命令,因此sudo npm install很危险.他建议将所有权转换/usr/local为您的用户.我认为这是一个可怕的建议,只是给你一种虚假的安全感:如果一个包可以运行任意命令,那么它可能会弄乱你的主目录(包括所有你的个人数据,可执行文件,配置和启动文件......),无论sudo或者谁拥有/usr/local这么不使用sudo真的对你没有多大帮助.如果您不信任包,则不要安装它; 如果你不相信包装,你怎么能使用呢?该/usr/local树仍然是一个系统目录树和OSX仍然是一个多用户的操作系统.

IMO更好的解决方案有两个方面:

  1. 不要安装或使用任何您不信任的软件包.如果你安装它然后你相信那个代码就是你(除非你总是要在某种类型的监狱中运行它,但是如果你要达到这些长度,你可能最好自己编写代码) .
  2. 离开sudo/usr/local单独将其安装在主目录中.你将面临与使用sudo或改变/usr/local所有权相同的大部分危险,但至少你不会养成坏习惯.

  • @muistooshort回答是正确的目标.说/ usr/local的chown在任何方面都比sudo好,这是不诚实的.使用sudo,你明确表达了提升权限的意图,使用chowning/usr/local,你将受到你安装的任何软件包的支配.没有人应该拥有/ usr或子目录,除非root建议否则会破坏unix安全模型. (2认同)