web-dev-qa-db-fra.com

GYP ERR! erreur de construction. Erreur de pile: 'make' a échoué avec le code de sortie 2

Je travaille actuellement sur une application Web nodejs. Je ne parviens pas à mettre l’application en ligne avec Cloud Foundry. J'ai fait des recherches sur les erreurs et il semble que certains des paquets en cours d'installation aient des conflits.

C'est le fichier 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>"
  }
}

C'est l'erreur que je rencontre lorsque j'essaie de pousser l'application via une fonderie dans le cloud. Cette erreur similaire se produit lorsque je npm installe après avoir supprimé tout le contenu du dossier node_modules .

../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

Est-ce que quelqu'un d'autre a rencontré ce problème ou sait comment le résoudre?

6
Michael Vaquier

Compris le problème. Certains des paquets npm n'étaient pas à jour. J'ai modifié le package.json pour installer toutes les versions les plus récentes de tous les packages et l'erreur a été corrigée.

5
Michael Vaquier

Supprimez le dossier ~/.node-gyp puis le fichier ~/.npmrc. 

Redémarrez votre serveur et réexécutez l’installation de npm dans le dossier de votre projet.

3
andromeda

Pour les autres personnes qui tombent sur ce problème:

Dans mon cas, la version du noeud de serveur était définie sur une version plus ancienne dans mon fichier package.json que celle utilisée par mon environnement local . Vérifiez donc ce que vous exécutez localement avec:

node --version
-> 8.11.3

Regardez ensuite les paramètres de votre serveur dans votre 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)
  },

J'espère que ça aidera quelqu'un.

2
Ian Ellis