使用npm时出错

时间:2014-11-23 09:47:04

标签: node.js titanium npm

尝试在mac上使用npm时出现以下错误。我在Mac 10.10.1

$ npm
Error: ENAMETOOLONG, mkdir '/Users/LM/npm info it worked if it ends with ok
npm verb cli [ '/usr/local/bin/node',
npm verb cli   '/usr/local/bin/npm',
npm verb cli   '-g',
npm verb cli   'config',
npm verb cli   'get',
npm verb cli   'prefix' ]
npm info using npm@2.1.6
npm info using node@v0.10.33
npm verb node symlink /usr/local/bin/node
/Users/LM/Desktop/Titanium Studio/TitaniumStudio.app/Contents/MacOS/npm info it worked if it ends with ok
npm verb cli [ '/usr/local/bin/node',
npm verb cli   '/usr/local/bin/npm',
npm verb cli   '-g',
npm verb cli   'config',
npm verb cli   'get',
npm verb cli   'prefix' ]
npm info using npm@2.1.6
npm info using node@v0.10.33
npm verb node symlink /usr/local/bin/node
/Users/LM/Desktop/Titanium Studio/TitaniumStudio.app/Contents/MacOS/npm info it worked if it ends with ok
npm verb cli [ '/usr/local/bin/node',
npm verb cli   '/usr/local/bin/npm',
npm verb cli   '-g',
npm verb cli   'config',
npm verb cli   'get',
npm verb cli   'prefix' ]
npm info using npm@2.1.6
npm info using node@v0.10.33
npm verb node symlink /usr/local/bin/node
/usr/local
npm verb exit [ 0, true ]
npm info ok
npm verb exit [ 0, true ]
npm info ok
npm verb exit [ 0, true ]
npm info ok'

任何想法意味着什么以及如何解决?

4 个答案:

答案 0 :(得分:0)

我认为问题是由权限引起的。尝试更改权限,如下所示:

  1. 解锁主目录中的权限。

    sudo chown -R `whoami` ~/.npm
    
  2. 如果1不起作用,请获取node_modules目录的写入权限。

    sudo chown -R `whoami` /usr/local/lib/node_modules
    
  3. 如果您仍然遇到错误,请更新/usr/local的许可。

    sudo chown -R `whoami` /usr/local
    
  4. 希望它有所帮助。

答案 1 :(得分:0)

错误ENAMETOOLONG表示nodejs(或OS)正在尝试使用超出操作系统最大值的路径名组件(在OSX的情况下,31)。

首先,您尝试从哪里安装nodejs?这可能是您的问题的原因。我从来没有使用过Titanium Studio,但你的问题是这样的,你正在使用的是nodejs。

您可能最好直接从github安装节点。以下内容可以帮助您入门。

安装节点

mkdir ~/src
cd ~/src
git clone https://github.com/joyent/node.git
cd node
git checkout v0.10.33
mkdir ~/local

./configure --prefix=$HOME/local/node
make
make install

不要忘记将$ HOME / local / node / bin添加到PATH环境变量中。 您可以通过

测试节点安装
node -v

安装NPM

curl http://npmjs.org/install.sh | sh

您可以通过

测试您的npm安装
npm -v

答案 2 :(得分:0)

这里提出了几个解决方案,其中有人有完全相同的问题,也使用钛工作室:https://developer.appcelerator.com/question/179230/unable-to-properly-update-titanium-studio

  • 手动更新CLI,Node.ACS和Alloy

    sudo npm install -g alloy@1.5.1
    sudo npm install -g titanium@3.4.1
    sudo npm install -g acs

  • 更改目录的权限

    sudo chown -R whoami〜/ .npm

虽然看起来最后一件事没有用。您可能还想查看此处:NPM throws error without sudo

答案 3 :(得分:0)

1。发现存在npm可执行文件的位置

首先,找出系统中存在npm个可执行文件的位置:

$ which -a npm

这应该输出两个或更多系统路径。

2。找出你的shell $PATH

然后,确定命令执行的搜索路径:

$ echo $PATH

这将为您提供一个以冒号分隔的目录列表,您的会话正在搜索npm等可执行文件。

3。优先考虑不同的npm

Appcelerator Titanium损坏了系统的一个或多个方面。您可能希望暂时卸载Titanium。

否则,为了优先安装另一个Node.js,您可以编辑$PATH或更简单地创建一个shell alias。例如:

$ alias npm=/usr/local/bin/npm

在大多数情况下,您可以将其“保存”在~/.bash_profile文件中(只需复制并粘贴文本,就像您在提示符处一样),以便将其应用于将来的shell会话。