web-dev-qa-db-fra.com

`node-pre-gyp install --fallback-to-build` a échoué lors de l'installation de MeanJS sur OSX

Je viens de m'acheter un livre Mac après avoir utilisé Windows pendant longtemps.

J'essayais de travailler sur un projet MeanJS sur lequel j'avais déjà travaillé. Faire npm install sur le projet génère une erreur

Failed to execute '/usr/local/bin/node /usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --module=/Users/Aayush/Work/lishn/repo/lishn-alpha/node_modules/grunt-node-inspector/node_modules/node-inspector/node_modules/v8-debug/build/debug/v0.4.6/node-v46-darwin-x64/debug.node --module_name=debug --module_path=/Users/Aayush/Work/lishn/repo/lishn-alpha/node_modules/grunt-node-inspector/node_modules/node-inspector/node_modules/v8-debug/build/debug/v0.4.6/node-v46-darwin-x64' (1)
npm ERR! Darwin 15.0.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install"
npm ERR! node v4.1.1
npm ERR! npm  v2.14.4
npm ERR! code ELIFECYCLE
> 
> npm ERR! v8-debug@0.4.6 install: `node-pre-gyp install --fallback-to-build`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the v8-debug@0.4.6 install script 'node-pre-gyp install --fallback-to-build'.
npm ERR! This is most likely a problem with the v8-debug package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-pre-gyp install --fallback-to-build
npm ERR! You can get their info via:
npm ERR!     npm owner ls v8-debug
npm ERR! There is likely additional logging output above.

J'ai essayé de vider le cache.

J'ai essayé d'installer node-pre-gyp avec Sudo et --unsafe-perm

J'ai aussi essayé d'installer à nouveau un projet MEAN, avec la même erreur.

Je n'arrive pas à trouver quel est le problème ici.

Node Version - 5.0.0

NPM Version - 3.3.10
31
aayush shrestha

j'ai essayé de mettre à niveau node-gyp:

npm install -g node-gyp

Cela a fonctionné pour moi.

Je trouve la solution ici , j'espère que cela peut aider.

34
Anne

russfrisch a commenté il y a 4 jours:

Je vivais le même problème. Changer de version pour grunt-node-inspector d'ajouter un "> =" au lieu d'un "~" a donné ceci à travaille pour moi.

Lien vers la page github où j'ai trouvé cette solution.

Lien vers mon post sur StackoverFlow

9
ManyQuestions

Cela ne fonctionnera peut-être pas pour tout le monde, mais j’ai mis à jour le noeud et il a résolu le problème pour moi alors qu’aucun des éléments ci-dessus ne fonctionnait. 

2
ocean800

Très bien, après un certain débogage, les dépendances suivantes utilisent une ancienne version de touch:

./node_modules/bower/node_modules/decompress-Zip/package.json:    "touch": "0.0.3"
./node_modules/bower/node_modules/lockfile/package.json:    "touch": "0"
./node_modules/gulp-nodemon/node_modules/nodemon/package.json:    "touch": "1.0.0",
./node_modules/gulp-nodemon/node_modules/touch/package.json:    "touch": "./bin/touch.js"
./node_modules/nodemon/package.json:    "touch": "~0.0.3",

Grâce à cela, j’ai pu faire travailler MeanS avec le noeud 5.

Voici l'historique des commandes que j'ai exécutées:

git clone https://github.com/meanjs/mean.git
cd mean
nvm install 5
nvm use 5
npm install
which node-gyp
npm install -g node-pre-gyp
Sudo xcodebuild -license
npm install

Avait quelques problèmes et puis:

J'ai ajouté la ligne suivante:

#!/usr/bin/env node

En haut du fichier ./mean/node_modules/.bin/touch

Et alors:

npm install

Et bien sûr, ajoutez peut-être un Sudo rm -rf ./node_modules && npm cache clean avant de réessayer.

1
jmunsch

Cela semble être un problème avec la mise à niveau de mon nœud. Comment jamais je l'ai résolu avec l'approche suivante.

Commencez par désinstaller le client, effacer le fichier et réinstaller avec ces commandes 

npm uninstall -g @angular/cli
npm cache clean
npm install -g @angular/cli

Puis installez node-pre-gyp

npm install -g node-pre-gyp

Redémarrez votre terminal et voyez si le problème est résolu.

1
tadtab

Comme @ ocean800 a déclaré que j'ai mis à jour le noeud. La solution ci-dessous est pour Ubuntu 16.04 qui a fonctionné pour moi, mais quelque chose de similaire sur OSX peut résoudre ce problème.

Sur Ubuntu 16.04, ce qui a fonctionné pour moi était la mise à niveau du noeud

mise à jour de nodejs sur Ubuntu 16.04

Je reproduis la solution à partir du lien ci-dessus

Pour mettre à jour, vous pouvez installer n 

Sudo npm install -g n

Alors juste:

Sudo n latest

ou une version spécifique

Sudo n 8.9.0

Puis essayez et installez 

Sudo npm install <package>
1
enthusiasticgeek

J'espère que mon scénario pourra aider quelqu'un d'autre ... J'ai eu le même problème avec le paquet bcrypt. Premièrement, j'ai essayé avec npm i -g node-gyp comme suggéré par Anne mais le problème a persisté. Ensuite, j'ai relu le message d'erreur pour mieux comprendre le problème et découvert que le script ne permet pas de créer le package à partir de rien, car une version précompilée n'existe pas. En particulier, il ne peut pas trouver la commande g ++, j'ai donc résolu d'installer le paquet build-essential avec Sudo apt install build-essential -y.

0
Jacopo

exécutez-vous l'exemple à partir du dossier node_modules?

Ils ne sont pas censés être courus à partir de là.

Créez plutôt le fichier suivant sur votre projet:

post-data.js

var Curl = require( 'node-libcurl' ).Curl,
   querystring = require( 'querystring' );

var curl = new Curl(),
  url  = 'http://posttestserver.com/post.php',
data = { //Data to send, inputName : value
    'input-arr[0]' : 'input-arr-val0',
    'input-arr[1]' : 'input-arr-val1',
    'input-arr[2]' : 'input-arr-val2',
    'input-name' : 'input-val'
};

//You need to build the query string, 
// node has this helper function, but it's limited for real use cases (no support for 
array values for example)
data = querystring.stringify( data );

 curl.setOpt( Curl.option.URL, url );
 curl.setOpt( Curl.option.POSTFIELDS, data );
 curl.setOpt( Curl.option.HTTPHEADER, ['User-Agent: node-libcurl/1.0'] );
 curl.setOpt( Curl.option.VERBOSE, true );

 console.log( querystring.stringify( data ) );

 curl.perform();

 curl.on( 'end', function( statusCode, body ) {

console.log( body );

this.close();
});

curl.on( 'error', curl.close.bind( curl ) );

Exécuter avec le noeud post-data.js

ref: https://github.com/JCMais/node-libcurl/issues/98

0
Shantanu Khond