Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 哎呀!生成错误。堆栈错误:';制作';失败,退出代码为2_Node.js_Npm_Ibm Cloud_Cloud Foundry_Gyp - Fatal编程技术网

Node.js 哎呀!生成错误。堆栈错误:';制作';失败,退出代码为2

Node.js 哎呀!生成错误。堆栈错误:';制作';失败,退出代码为2,node.js,npm,ibm-cloud,cloud-foundry,gyp,Node.js,Npm,Ibm Cloud,Cloud Foundry,Gyp,我目前正在开发一个nodejs web应用程序,但在使用cloud foundry将该应用程序上线时遇到了问题。我对错误进行了一些研究,似乎正在安装的一些软件包存在一些冲突 这是package.json文件 { "dependencies": { "c3": "^0.4.12", "cfenv": "1.0.0", "cloudant": "^1.8.0", "dygraphs": "^2.0.0", "express": "4.5.1", "

我目前正在开发一个nodejs web应用程序,但在使用cloud foundry将该应用程序上线时遇到了问题。我对错误进行了一些研究,似乎正在安装的一些软件包存在一些冲突

这是package.json文件

{
  "dependencies": {
    "c3": "^0.4.12",
    "cfenv": "1.0.0",
    "cloudant": "^1.8.0",
    "dygraphs": "^2.0.0",
    "express": "4.5.1",
    "getmac": "1.0.6",
    "http": "0.0.0",
    "mqtt": "1.0.5",
    "properties": "1.2.1",
    "save": "^2.3.0",
    "sockjs": "0.3.9",
    "websocket-multiplex": "0.1.x"
  },
  "description": "description.",
  "license": "UNLICENSED",
  "main": "app.js",
  "repository": {
    "type": "git",
    "url": "<gitUrl>"
  }
}
{
“依赖项”:{
“c3”:“^0.4.12”,
“cfenv”:“1.0.0”,
“cloudant”:“^1.8.0”,
“动态图”:“^2.0.0”,
“快车”:“4.5.1”,
“getmac”:“1.0.6”,
“http”:“0.0.0”,
“mqtt”:“1.0.5”,
“属性”:“1.2.1”,
“保存”:“^2.3.0”,
“sockjs”:“0.3.9”,
“websocket多路复用”:“0.1.x”
},
“说明”:“说明”,
“许可证”:“未经许可证”,
“main”:“app.js”,
“存储库”:{
“类型”:“git”,
“url”:”
}
}
这就是我试图通过CloudFoundry推送应用程序时遇到的错误。在删除节点\u模块文件夹的所有内容后进行npm安装时,也会发生类似错误

../src/bufferutil.cc:32:50: error: call of overloaded 'NODE_SET_METHOD(v8::Local<v8::FunctionTemplate>&, const char [6], void (&)(const v8::FunctionCallbackInfo<v8::Value>&))' is ambiguous
     NODE_SET_METHOD(t, "merge", BufferUtil::Merge);

../src/bufferutil.cc:32:50: note: candidates are:
In file included from ../src/bufferutil.cc:8:0:
/root/.node-gyp/8.0.0/include/node/node.h:257:13: note: void node::NODE_SET_METHOD(v8::Local<v8::Template>, const char*, v8::FunctionCallback)
 inline void NODE_SET_METHOD(v8::Local<v8::Template> recv,
             ^
/root/.node-gyp/8.0.0/include/node/node.h:270:13: note: void node::NODE_SET_METHOD(v8::Local<v8::Object>, const char*, v8::FunctionCallback)
 inline void NODE_SET_METHOD(v8::Local<v8::Object> recv,
             ^
bufferutil.target.mk:95: recipe for target 'Release/obj.target/bufferutil/src/bufferutil.o' failed
make: *** [Release/obj.target/bufferutil/src/bufferutil.o] Error 1
make: Leaving directory '/home/WibiSmart-Bluemix-App/node_modules/bufferutil/build'

gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:285:23)
gyp ERR! stack     at emitTwo (events.js:125:13)
gyp ERR! stack     at ChildProcess.emit (events.js:213:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:197:12)
gyp ERR! System Linux 4.4.30-ti-r64
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/WibiSmart-Bluemix-App/node_modules/bufferutil
gyp ERR! node -v v8.0.0
gyp ERR! node-gyp -v v3.6.1
gyp ERR! not ok
。/src/bufferutil.cc:32:50:错误:重载的“NODE_SET_方法(v8::Local&,const char[6],void(&)(const v8::FunctionCallbackInfo&))的调用不明确
节点集合方法(t,“merge”,BufferUtil::merge);
../src/bufferutil.cc:32:50:注意:候选项包括:
在../src/bufferutil.cc中包含的文件中:8:0:
/root/.node gyp/8.0.0/include/node/node.h:257:13:注意:void node::node\u SET\u方法(v8::Local,const char*,v8::FunctionCallback)
内联void NODE_SET_方法(v8::Local recv,
^
/root/.node gyp/8.0.0/include/node/node.h:270:13:注意:void node::node_SET_方法(v8::Local,const char*,v8::FunctionCallback)
内联void NODE_SET_方法(v8::Local recv,
^
bufferutil.target.mk:95:目标'Release/obj.target/bufferutil/src/bufferutil.o'的配方失败
make:**[Release/obj.target/bufferutil/src/bufferutil.o]错误1
make:离开目录“/home/WibiSmart Bluemix App/node_modules/bufferutil/build”
gyp错误!生成错误
gyp ERR!堆栈错误:`make`失败,退出代码:2
gyp ERR!在ChildProcess.onExit(/usr/local/lib/node_modules/npm/node_modules/node gyp/lib/build.js:285:23)处堆栈
gyp ERR!在emitTwo处堆叠(events.js:125:13)
ChildProcess.emit(events.js:213:7)上的gyp ERR!堆栈
gyp ERR!在Process.ChildProcess.\u handle.onexit处堆栈(internal/child\u Process.js:197:12)
gyp ERR!系统Linux 4.4.30-ti-r64
gyp ERR!命令“/usr/local/bin/node”“/usr/local/lib/node_modules/npm/node_modules/node gyp/bin/node gyp.js”“重建”
gyp ERR!cwd/home/WibiSmart Bluemix App/node_modules/bufferutil
gyp ERR!节点-v8.0.0
gyp ERR!节点gyp-v3.6.1
哎呀!不行

是否有其他人遇到此问题,或者知道如何解决此问题?

解决了此问题。一些npm软件包不是最新的。我修改了package.json以安装所有软件包的所有最新版本,错误已得到修复。

删除~/.node gyp文件夹,然后删除~/.npmrc文件

重新启动服务器并在项目文件夹中重新运行npm安装

编辑:


警告:删除~/.npmrc将删除您的其他配置

,以帮助其他遇到此问题的人:

在我的例子中,服务器节点版本在我的package.json文件中设置为比本地环境运行的版本旧的版本。 因此,请检查您在本地运行的内容:

node --version
-> 8.11.3
然后查看package.json中的服务器设置:

{
  "name": "myapp",
  "version": "0.0.0",
  "private": true,
  "engines": {
    "node": "7.10.2" // <-- This is too old, set it to the node version you are running locally (8.11.3)
  },
{
“名称”:“myapp”,
“版本”:“0.0.0”,
“私人”:没错,
“发动机”:{
“node”:“7.10.2”//如果您正在使用,还可以更改到软件包支持的版本,如:

nvm install 7.10.2
nvm use 7.10.2
它在删除
包锁.json
并重新运行
npm后工作
安装

如果您正在使用纱线构建程序请删除
纱线。锁定
并
重新运行
纱线安装


这是一个古老但一致的问题,详细记录在:

对我来说,错误提到的版本号如下:

gyp ERR! System Darwin 17.7.0
gyp ERR! node -v v12.1.0
gyp ERR! node-gyp -v v3.8.0
在尝试所有可能的解决方案组合(修改
~/.npmrc
,删除
~/.node gyp
,清除npm缓存,删除
节点模块
,甚至重新启动系统)之后,对我有效的方法是降级节点

我相信日志中提到的
node
node-gyp
的版本是不兼容的。所以我恢复到了一个旧的node版本,它工作起来很有魅力

npm install -g node@11.10.0

应该有一个清晰的文档来描述两者之间的破坏性更改和兼容性问题。

我在安装gazebo gzweb时遇到了同样的问题。我发现
apt install nodejs
安装“/usr/bin/”方向的“节点”。您可以通过
验证哪个节点
。但是
节点-v
仍然引用“/usr/local/bin/node”,这是我未能卸载的错误版本。 因此,作为我的解决办法:

rm -rf /usr/local/bin/node
cp -i /usr/bin/node /usr/local/bin/
cp -i /usr/bin/nodejs /usr/local/bin/
步骤:

sudo-apt-get-install-npm
npm安装-g n
马厩
npm安装npm@6.9.0-g

ln-s/usr/local/bin/npm/usr/bin/npm
我认为删除此目录并清理
npm
的缓存更好:

rm -rf ~/.node-gyp/
rm -r node_modules/.bin/;
rm -r build/
npm cache clean
你可以测试一下

npm install -g node-gyp

最后:

npm install <your module>
npm安装
在我们的案例中(因为
make
失败),这个问题可以通过安装构建/开发工具来解决:

Ubuntu/Debian:

apt-get install -y build-essential
CentOS:

yum install gcc gcc-c++ make 
软呢帽23及以上:

dnf install @development-tools
如果这不是解决方案,您可能希望尝试升级或降级节点,删除
包锁.json
节点模块
文件夹,然后重新运行
npm安装

CentOS 6用户 Node 10+需要GCC4.9。显然CentOS 6没有。您可以在npm安装之前使用这些命令作为解决方法(使用Node 11 npm 6进行测试)


来源:

按照以下步骤解决问题

  • 确保已安装生成工具
  • Upd
    dnf install @development-tools
    
    yum install devtoolset-7
    source scl_source enable devtoolset-7
    
    sudo npm install -g npm@specific_npm_version_here
    
    sudo npm install -g n
    sudo n specify_node_version_here