【问题标题】:Error when using npm使用 npm 时出错
【发布时间】:2014-11-23 09:47:04
【问题描述】:

尝试在 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'

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

【问题讨论】:

    标签: node.js titanium npm


    【解决方案1】:

    我认为问题出在权限上。尝试如下更改权限:

    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
      

    希望对你有帮助。

    【讨论】:

    • ~中没有.npm。运行其他命令但同样的问题。
    • 如果您仍然遇到错误,请尝试卸载所有节点和 npm 实例并通过brewcurl 重新安装。
    • 你的node和npm是什么版本?
    • 从日志中可以看出,npm 版本是 2.1.6,node 版本是 0.10.33
    【解决方案2】:

    错误 ENAMETOOLONG 表示 nodejs(或操作系统)正在尝试使用超出操作系统最大值的路径名组件(对于 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
    

    【讨论】:

    • 我尝试从自制软件和从 nodejs 网站下载的软件包安装节点。都没有解决问题。
    • 你能给我以下2个命令“哪个节点”和“哪个npm”的输出
    【解决方案3】:

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

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

      sudo npm install -g 合金@1.5.1
      sudo npm install -g Titan@3.4.1
      sudo npm install -g acs

    • 更改目录的权限

      sudo chown -R whoami ~/.npm

    虽然最后一件事似乎没有奏效。你可能也想看看这里:NPM throws error without sudo

    【讨论】:

    • 如果您使用 -g 则安装到系统路径中,而不是在 whoami 的 homedir 文件夹中。
    【解决方案4】:

    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 会话。

    【讨论】:

      猜你喜欢
      • 2016-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-22
      • 2017-10-24
      • 2014-02-17
      • 2018-06-08
      • 2017-09-12
      相关资源
      最近更新 更多