yo hubot命令后的npm协议错误

时间:2016-05-27 11:45:34

标签: node.js npm

我现在已经有一天了。我通过vagrant在虚拟盒子上运行ubuntu / trusty64。每次我尝试使用yo hubot命令构建一个新的hubot项目时,都会安装hubot,但是会出现npm错误。我真的无法弄清问题是什么。

我通过shell安装了node,npm,hubot和coffee脚本。这是我的provision.sh脚本的样子

#!/bin/bash

# update package libraries
apt-get -y update

# install curl if it is not already installed
apt-get -y  install curl

# if nodejs is not installed...
type node >/dev/null 2>&1 || if [[ $? != 0 ]]; then
    # we install it
    curl -sL http://deb.nodesource.com/setup_5.x | sudo -E bash -
    apt-get -y install nodejs

    # update npm
    npm install -g npm

fi

command -v hubot &>/dev/null || {
    npm install -g hubot coffee-script
}

# install yeoman for hubot
command -v yo &>/dev/null || {
    npm install -g yo generator-hubot
}

安装的nodejs版本是v5.11.1 安装的npm版本是v3.8.6

安装完成后,下一步就是绞架hubot。这是通过创建一个新目录来完成的。我将目录命名为myhubot。当我切换到目录并输入命令:Yo hubot --default时,它开始安装,但它以此错误结束:

13519 error Linux 3.13.0-86-generic
13520 error argv "/usr/bin/nodejs" "/usr/bin/npm" "install" "hubot" "hubot-scripts" "hubot-diagnostics" "hubot-help" "hubot-heroku-keepalive" "hubot-google-images" "hubot-google-translate" "hubot-pugme" "hubot-maps" "hubot-redis-brain" "hubot-rules" "hubot-shipit" "--save"
13521 error node v5.11.1
13522 error npm  v3.8.6
13523 error path ../coffee-script/bin/coffee
13524 error code EPROTO
13525 error errno -71
13526 error syscall symlink
13527 error EPROTO: protocol error, symlink '../coffee-script/bin/coffee' -> '/vagrant/myhubot/node_modules/.bin/coffee'
13528 error If you need help, you may report this error at:
13528 error     <https://github.com/npm/npm/issues>
13529 verbose exit [ -71, true ]

显然,即使在错误日志之后,如果键入&#34; hubot&#34;命令,我记录了 进入hubot shell。但是,当我ping hubot时,我没有得到答复。

Here是完整的npm-debug日志。
think这张图片也会有所帮助。提前谢谢。

1 个答案:

答案 0 :(得分:0)

发生此错误是因为npm命令需要符号链接,并且在此问题中引用的Windows不支持它:https://github.com/npm/npm/issues/9901

您可以按照此帖中列出的步骤解决此问题:Symbolic Links with Vagrant Windows

步骤如下:

在您的VagrantFile中添加一个代码段以启用符号链接:

config.vm.provider "virtualbox" do |v|
    v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
end

以管理员模式启动Vagrant机器
这是为了规避 Vagrant对符号链接的限制。