web-dev-qa-db-ja.com

GYP ERR!ビルドエラー。スタックエラー: 'make'が終了コード2で失敗しました

私は現在、nodejs Webアプリケーションに取り組んでいます。クラウドファウンドリを使用してオンラインでアプリケーションをプッシュできません。エラーについていくつか調査しましたが、インストールされているパッケージの一部が競合しているようです。

これは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>"
  }
}

これは、クラウドファウンドリを介してアプリケーションをプッシュしようとしたときに発生するエラーです。 node_modulesフォルダーのすべてのコンテンツを削除した後に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

他の誰かがこの問題に遭遇しましたか、それを修正する方法を知っていますか?

27
Michael Vaquier

問題を理解しました。一部のnpmパッケージは最新ではありませんでした。すべてのパッケージの最新バージョンをすべてインストールするようにpackage.jsonを変更し、エラーを修正しました。

5
Michael Vaquier

〜/ .node-gypフォルダーを削除してから、〜/ .npmrcファイルを削除します。

サーバーを再起動し、プロジェクトフォルダーでnpm installを再実行します

3
andromeda

この正確な問題に遭遇した他の人々のために:

私の場合、サーバーノードのバージョンは、私の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)
  },

これが誰かの役に立つことを願っています。

2
Ian Ellis

私はこのディレクトリを削除してnpmのキャッシュをきれいにする方が良いと思います:

rm -rf ~/.node-gyp/
rm -r node_modules/.bin/;
rm -r build/
npm cache clean

そしてあなたはテストすることができます

npm install -g node-gyp

そして

npm install -g node-pre-gyp

最終的に:

npm install <your module>

CentOS 6ユーザー

ノード10+にはGCC4.9が必要です。そしてどうやらCentOS 6はそれを持っていない。 npmをインストールする前にこれらのコマンドを回避策として使用できます(Node 11 NPM 6でテスト済み)。

yum install devtoolset-7
source scl_source enable devtoolset-7

ソース: https://github.com/lovell/sharp/issues/128

0
Taylan

ガゼボgzwebをインストールすると、同じ問題が発生しました。 apt install nodejsが「/ usr/bin /」の方向に「ノード」をインストールしていることがわかりました。 which nodeで確認できます。しかし、node -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 install -g n n stable npm install [email protected] -g ln -s /usr/local/bin/npm /usr/bin/npm

0
HAOBO LUO

[〜#〜] nmv [〜#〜] を使用している場合は、次のようにパッケージサポートのバージョンを変更することもできます。

nvm install 7.10.2
nvm use 7.10.2
0