当前位置: 首页 > 面试题库 >

npm install,node-gyp只能在两台相同的计算机之一上生成错误

秦禄
2023-03-14
问题内容

我正在尝试在Ubuntu 14.04 VPS上运行npm install,但是在安装业力方面一直失败。当我以jenkins用户身份登录时,命令npm
install从Jenkins构建步骤执行,但是从命令行也失败。Jenkins服务器通过Capistrano调用另一个VPS(生产服务器)上的部署,据我所知,该部署与第一个VPS完全一样。

奇怪的是,在生产服务器(第二个VPS)上部署后,npm install也将运行,并且在这里运行良好。

这是错误:

ws@0.5.0安装/var/lib/jenkins/workspace/bitbuilders-
cms/node_modules/karma/node_modules/socket.io/node_modules/engine.io/node_modules/ws(node-
gyp重建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重建时,它会提供相同的输出。

同样,在另一台计算机上它运行正常。

它们都运行:

  • Ubuntu 14.04
  • io.js 2.0.2
  • npm 2.9.0
  • GNU Make 3.81
  • python 2.7.6
  • gcc 4.8.2
  • 节点gyp 1.0.3
  • 虚拟机0.25.2

到目前为止我尝试过的

我全局安装了node-gyp(npm install -g node-gyp)并运行了0.12.3节点。在安装之前,我运行了:

  • npm缓存清理
  • rm -rf node_modules
  • rm -rf〜/ .node-gyp

在npm install出现此错误的VPS上,我无法在后面运行任何gulp任务,因为它抱怨找不到特定的npm模块。在此计算机上,npm
install以用户jenkins的身份运行。

在其他npm install正常运行的VPS上,后续的gulp任务也可以正常运行。在这台机器上,npm
install是通过Capistrano以用户www-data的身份执行的。它们都使用shell / bin / bash。

不幸的是,问题仍然存在。

这是怎么了?任何帮助是极大的赞赏!


问题答案:

npm install通过Jenkins在VM上成功运行Karma和Karma
之后,我得出的结论是,在VPS上必须严重破坏某些东西,这给我带来了麻烦。我重新安装了Ubuntu 14.04,其余的安装在VPS上,现在一切正常。

我还注意到,重新安装后,我不需要显式启动ssh-agent并添加我的ssh密钥(eval ssh-agent -sssh-add [key])即可开始在生产服务器上进行部署。也许这根本没有关系,但是如果有人遇到类似问题,这可能会有所帮助。

更新:
另外,我发现有人遇到同样问题的帖子。解决方案似乎是增加交换文件的大小。我没有尝试过,但这可能是正确的解决方案https :
//www.digitalocean.com/community/questions/npm-gets-killed-no-matter-
what?answer=18115



 类似资料:
  • 我使用gradle创建了一个项目,并创建了gradle包装器。如何确保项目在没有安装gradle的机器上构建和运行?

  • 问题内容: 我没有直接依赖于weak或node-gyp,但是我想我的其他依赖项(express,phantom,ejs,aws- sdk,moment)都需要它。任何人都遇到这样的问题并能够解决? 问题答案: 这是有效的。在安装过程中需要python 2.6。 https://github.com/TooTallNate/node- gyp/issues/363

  • 问题内容: 我有两台用于ES(2.2.0)的专用计算机。这两台机器具有相同的规格。每个服务器都在Windows Server 2012 R2上运行,并具有128GB内存。关于ES,我计划在群集的每台计算机上有两个节点。 我正在查看elasticsearch.yml,以了解如何配置每个节点以形成集群。 同一网络上的两台机器具有以下服务器名称和IP地址: 我正在查看elasticsearch.yml,

  • 问题内容: Python网站上是否有官方文档,内容涉及如何在Linux的同一台计算机上安装和运行多个版本的Python? 我可以找到成千上万的博客文章和答案,但是我想知道是否有“标准”的官方方式来做到这一点? 还是全部取决于操作系统? 问题答案: 我认为这是完全独立的。只需安装它们,然后即可使用命令例如和。链接到您要用作默认值的那个。 无论如何,所有库都位于单独的文件夹中(以版本命名)。 如果要手

  • 问题内容: 我刚刚发现我可以使用Python编写一个非常简单的Web服务器。我已经有一个Apache Web服务器,我想在这台机器上尝试基于Python的Web服务器。但是,如果尝试尝试,可能会引起某种冲突。我的意思是两个Web服务器将如何“决定”谁需要服务器处理来自客户端的请求? 问题答案: 让他们监听不同的端口,您会没事的。 默认的Web端口是80。当您在浏览器中打开某些网址而不指定端口时,默

  • 这段代码工作正常(并与我们更大的应用程序联系在一起),并为我们的应用程序打开了配置屏幕。 以下是等待空闲方法: 在Windows10机器上,clickOnTable()方法失败,因为方法实际上没有单击选项卡,因此屏幕上没有显示我们要查找的表。 null 更新1 在失败的笔记本电脑和工作的Windows10机器上尝试了不同版本的Java。两者都没有区别。 出现故障的笔记本电脑运行的是Windows