我正在尝试在Ubuntu 14.04 VPS上运行npm install,但它仍然无法安装业力。 命令npm install是从Jenkins构建步骤执行的,但是当我以jenkins用户身份登录时,命令行也会失败。 Jenkins服务器通过另一个VPS(生产服务器)上的Capistrano调用部署,据我所知,该部署与第一个VPS相同。
奇怪的是,npm install也是在生产服务器(第二个VPS)上部署之后运行的,并且运行正常。
这是错误:
ws@0.5.0 install /var/lib/jenkins/workspace/bitbuilders-cms/node_modules/karma/node_modules/socket.io/node_modules/engine.io/node_modules/ws (node-gyp rebuild 2> builderror.log)|| (退出0) 杀死
当我检查此目录中的builderror.log时,它说:
In file included from ../src/bufferutil.cc:15:0:
../node_modules/nan/nan.h: In function 'v8::Local<v8::Signature> NanNew(v8::Handle<v8::FunctionTemplate>, int, v8::Handle<v8::FunctionTemplate>*)':
../node_modules/nan/nan.h:207:78: error: no matching function for call to 'v8::Signature::New(v8::Isolate*, v8::Handle<v8::FunctionTemplate>&, int&, v8::Handle<v8::FunctionTemplate>*&)'
return v8::Signature::New(v8::Isolate::GetCurrent(), receiver, argc, argv);
^
../node_modules/nan/nan.h:207:78: note: candidate is:
In file included from ../src/bufferutil.cc:7:0:
/var/lib/jenkins/.node-gyp/2.0.2/deps/v8/include/v8.h:4188:27: note: static v8::Local<v8::Signature> v8::Signature::New(v8::Isolate*, v8::Handle<v8::FunctionTemplate>)
static Local<Signature> New(
^
/var/lib/jenkins/.node-gyp/2.0.2/deps/v8/include/v8.h:4188:27: note: candidate expects 2 arguments, 4 provided
../src/bufferutil.cc: In static member function 'static void BufferUtil::Initialize(v8::Handle<v8::Object>)':
../src/bufferutil.cc:32:17: warning: 'v8::Local<v8::String> NanSymbol(const char*, int)' is deprecated (declared at ../node_modules/nan/nan.h:616) [-Wdeprecated-declarations]
target->Set(NanSymbol("BufferUtil"), t->GetFunction());
^
../src/bufferutil.cc:32:39: warning: 'v8::Local<v8::String> NanSymbol(const char*, int)' is deprecated (declared at ../node_modules/nan/nan.h:616) [-Wdeprecated-declarations]
target->Set(NanSymbol("BufferUtil"), t->GetFunction());
^
make: *** [Release/obj.target/bufferutil/src/bufferutil.o] Error 1
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/var/lib/jenkins/.nvm/versions/io.js/v2.0.2/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:269:23)
gyp ERR! stack at emitTwo (events.js:87:13)
gyp ERR! stack at ChildProcess.emit (events.js:172:7)
gyp ERR! stack at Process.ChildProcess._handle.onexit (child_process.js:1009:12)
gyp ERR! System Linux 3.2.0-56-generic
gyp ERR! command "/var/lib/jenkins/.nvm/versions/io.js/v2.0.2/bin/iojs" "/var/lib/jenkins/.nvm/versions/io.js/v2.0.2/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /var/lib/jenkins/workspace/bitbuilders-cms/node_modules/karma/node_modules/socket.io/node_modules/engine.io/node_modules/ws
gyp ERR! node -v v2.0.2
gyp ERR! node-gyp -v v1.0.3
gyp ERR! not ok
当我运行node-gyp rebuild时,它给出了相同的输出。
同样,在另一台机器上运行良好。
他们都跑了:
到目前为止我尝试了什么
我全局安装了node-gyp(npm install -g node-gyp)并运行节点0.12.3。 在安装之前我跑了:
在NPS安装提供此错误的VPS上,我无法执行任何gulp任务,因为它抱怨它无法找到某些npm模块。 在这台机器上,npm install以用户jenkins运行。
在npm安装运行正常的另一个VPS上,后续的gulp任务也可以正常运行。 在这台机器上,npm install通过Capistrano作为用户www-data执行。他们都使用shell / bin / bash。
不幸的是问题仍然存在。
这里出了什么问题? 非常感谢任何帮助!
答案 0 :(得分:1)
在VM上通过Jenkins成功运行npm install
和Karma之后,我得出的结论是,必须严重阻止VPS上的某些事情给我带来麻烦。
我重新安装了Ubuntu 14.04,剩下的就是VPS,现在一切正常。
我还注意到重新安装后我不需要显式启动ssh-agent并再添加我的ssh密钥(eval ssh-agent -s
和ssh-add [key]
)以在生产服务器上开始部署。
也许这根本没有关系,但如果有人遇到类似的问题,这可能会有所帮助。
更新:另外,我发现这个帖子遇到了同样的问题。解决方案似乎是增加交换文件的大小。我没有尝试过,但这可能是正确的解决方案:https://www.digitalocean.com/community/questions/npm-gets-killed-no-matter-what?answer=18115