安装Gulp出错

6

我对使用终端和安装gulp还很陌生,但遇到了一些错误。这些错误不断出现,我也不知道原因。我的目标是全局安装gulp,但不确定是否有旧文件干扰。也许清除并重新安装会有用?错误信息如下。谢谢!

pm ERR! tar.unpack untar error /Users/.npm/gulp/3.9.0/package.tgz
npm ERR! Darwin 14.1.0
npm ERR! argv "node" "/usr/local/bin/npm" "install" "-g" "gulp"
npm ERR! node v0.12.4
npm ERR! npm  v2.10.1
npm ERR! path /usr/local/lib/node_modules/gulp
npm ERR! code EACCES
npm ERR! errno -13

npm ERR! Error: EACCES, mkdir '/usr/local/lib/node_modules/gulp'
npm ERR!     at Error (native)
npm ERR!  { [Error: EACCES, mkdir '/usr/local/lib/node_modules/gulp']
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   path: '/usr/local/lib/node_modules/gulp',
npm ERR!   fstream_type: 'Directory',
npm ERR!   fstream_path: '/usr/local/lib/node_modules/gulp',
npm ERR!   fstream_class: 'DirWriter',
npm ERR!   fstream_stack: 
npm ERR!    [ '/usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:35:25',
npm ERR!      '/usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:47:53',
npm ERR!      'FSReqWrap.oncomplete (fs.js:95:15)' ] }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

npm ERR! Please include the following file with any support request:
npm ERR!     /usr/local/bin/npm-debug.log

不要因为被踩而放弃继续留下来并提出更多问题。你的问题是常见的问题,很容易解决:)。请看下面的答案,或者如果你不介意频繁输入“sudo”,其他答案也是有效的:)。 - Chev
@AlexFord 谢谢你,Alex :) 是的,我不确定为什么我的问题被投票下降了。在尝试安装gulp之前,我已经安装了Homebrew,但直到我尝试进行全局安装时才遇到了这个错误。我一定会尝试这个方法,并回来告诉你是否能够解决这个问题。非常感谢你! :) - cesar gomez
不客气:)别担心,我会用npm帮你解决全局安装的问题。另外提醒一下,如果你通过Homebrew安装nvm,请确保在安装后阅读终端中的文本并按照说明进行操作。这只需要几个快速简单的步骤,但如果像我一样忽略它,很容易错过:P。它会告诉你在.bashrc文件中添加几行代码。请注意,在OSX上,你实际上需要将这些行添加到~/.bash_profile中。 - Chev
不要忘记将帮助过你的答案标记为已接受 :) - Chev
2个回答

6
其他答案通过使用sudosu root来规避这些问题。我个人不建议这样做。它能够工作的原因是在OSX上,全局npm模块目录有更严格的权限。仅仅为了解决权限问题而以root权限运行命令很可能只会在以后给你带来麻烦,并使您容易受到安全漏洞的攻击。至少,这将导致您在尝试执行常规的node/npm操作时不得不经常使用sudo。更安全的方法是更改该目录的权限。然而,即使这样做有时也会引起噩梦。
我的替代建议是使用nvm
您可以使用curl安装它(您已经拥有此功能,只需粘贴下面的命令):
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | bash

如果你已经安装了Homebrew,你也可以使用它:

brew install nvm

安装后,您将能够轻松安装所需的任何Node或iojs版本。
nvm install node

以上命令将安装最新版本的node。好处在于所有的node/iojs安装都在~/.nvm/内进行管理,这意味着它们位于您的主目录中,您将始终拥有完全访问权限,并且永远不需要使用sudo


2
嗨,Alex。谢谢你的帮助!这正是我在寻找的! :) - cesar gomez
1
需要注意的是,这不仅仅是头痛的问题,而且会造成重大的安全漏洞。永远不要使用sudo来安装node包。 - codewizard

1

您没有写入 /sur/local 的权限。 要么运行 sudo npm install -g gulp,要么给您的用户写入 /usr/local 的权限。


以这种方式安装软件包会完全向 Node 软件包开放您的整个文件系统。即使创建者没有恶意,他们代码中的一个小错误也可能导致您的整个文件系统被破坏。 - codewizard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接