Nodo: è stato compilato su una versione Node.js diversa utilizzando NODE_MODULE_VERSION 51


142

Sto eseguendo un'applicazione nodo sul terminale. Sono stati recentemente aggiornati al nodo v8.5.0, ma sto riscontrando questo errore:

Error: The module '/tidee/tidee-au/packages/tidee-au-server/node_modules/bcrypt/lib/binding/bcrypt_lib.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 51. This version of Node.js requires
NODE_MODULE_VERSION 57. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).
    at Object.Module._extensions..node (module.js:653:18)
    at Module.load (module.js:545:32)
    at tryModuleLoad (module.js:508:12)
    at Function.Module._load (module.js:500:3)
    at Module.require (module.js:568:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/tidee/tidee-au/packages/tidee-au-server/node_modules/bcrypt/bcrypt.js:6:16)
    at Module._compile (module.js:624:30)
    at Module._extensions..js (module.js:635:10)
    at Object.require.extensions.(anonymous function) [as .js] (/tidee/tidee-au/packages/tidee-au-server/node_modules/babel-register/lib/node.js:152:7)
    at Module.load (module.js:545:32)
    at tryModuleLoad (module.js:508:12)
    at Function.Module._load (module.js:500:3)
    at Module.require (module.js:568:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/tidee/tidee-au/packages/tidee-au-server/server/helpers/encryptPass.js:1:16)

Qualche idea su come risolverlo?


Per favore, segna la risposta corretta
Shanika Ediriweera,

Risposte:


119

Devi rimuovere la cartella del modulo ( bcrypt) dalla node_modulescartella e reinstallarla, usa i seguenti comandi:

$ rm -rf node_modules/bcrypt
$ npm install
// or
$ yarn

7
Non funziona Per me, il problema è con il zmqpacchetto e ricostruirlo o eliminarlo e npm installingricominciare da capo non aiuta. Sempre lo stesso problema.
trusktr,

7
@trusktr Cercate di eliminare node_modules cartella completamente: rm -rf node_modules. Cancella cache npm:, npm cache clearrimuovere package-lock.json o npm-shrinkwrap.json. E solo dopo quella corsa npm i.
alexmac,

1
Ho ricevuto un bel messaggio, "Spero proprio che tu sappia cosa stai facendo." quando ho cancellato quella cache. Io non tanto, ma a quanto pare lo fai! Ha funzionato.
ouflak,

non hai / non devi mai farlo npm cache clear, gli altri comandi
ce l'hanno

Ha funzionato per me! Il mio errore esatto era: "Il modulo '/ Users / <nomeutente> / Download / intro-to-graphql / node_modules / bcrypt / lib / binding / bcrypt_lib .node' è stato compilato su una versione Node.js diversa utilizzando NODE_MODULE_VERSION 64."
solito

73

Ho avuto lo stesso problema e nulla di menzionato qui ha funzionato per me. Ecco cosa ha funzionato per me:

  1. Richiedi tutte le dipendenze necessarie nel main.jsfile che viene eseguito da electron. (questa sembrava essere la prima parte importante per me)
  2. Esegui npm i -D electron-rebuildper aggiungere il pacchetto di ricostruzione elettronica
  3. Rimuovere la node-modulescartella e il packages-lock.jsonfile.
  4. Esegui npm iper installare tutti i moduli.
  5. Esegui ./node_modules/.bin/electron-rebuild( .\node_modules\.bin\electron-rebuild.cmdper Windows) per ricostruire tutto

È molto importante eseguire ./node_modules/.bin/electron-rebuilddirettamente dopo che npm ialtrimenti non ha funzionato sul mio mac.

Spero di poter aiutare alcune anime frustrate.


2
Il solo fatto di eseguire la ricostruzione elettronica ha funzionato per me. Nel mio caso non è necessario eliminare e reinstallare i moduli.
Stoefln,

1
Bene, allora hai avuto fortuna @stoefln, sfortunatamente è fondamentale seguire questi esatti passaggi uno ad uno in alcune configurazioni.
Chitzui,

1
Sono su Windows ma questa soluzione ha funzionato anche per me. Puoi spiegare cosa causa questo problema? Potrebbe essere un bug con Electron?
jbinvnt,

@jbinvnt sì, è noto Limitazione elettronica github.com/SimulatedGREG/electron-vue/issues/872
Konstantin Vdovkin

Come eseguire solo la ricostruzione di elettroni attraverso la pipeline o qualsiasi comando
Kirataka

58

Devi ricostruire il pacchetto e dire a npm di aggiornare anche il suo binario . Provare:

npm rebuild bcrypt --update-binary

@robertklep ha risposto a una domanda relativa con questo comando, guarda .

Solo la ricostruzione non ha risolto il mio problema, questo funziona bene nella mia applicazione.

Spero che sia d'aiuto!


1
pensavo che lo scopo della ricostruzione fosse di aggiornare il binario, quando vorresti ricostruire SENZA aggiornare il binario?
bobmoff,

1
@bobmoff Stavo pensando allo stesso modo cercando di usare solo la ricostruzione, i documenti dicono che aggiornano tutto per noi .. ma solo errori - Il mio problema era sincronizzare il mio repository locale funzionante legacy con una nuova versione NodeJS / NPM locale. Quindi mi sono guardato intorno e "--date-binario" era il modo di dirlo per forzare davvero e cambiarlo nel modo in cui ha a che fare con la ricostruzione naturale.
RPichioli,

30

Esegui semplicemente:

npm uninstall bcrypt

Seguito da:

npm install bcrypt(oppure npm install, se bcrypt è dichiarato come dipendenza nel file package.json )


13

puoi vedere questo link

per controllare il tuo nodo verison a destra. l'utilizzo di NODE_MODULE_VERSION 51 significa che la versione del nodo è nodejs v7.x, richiede NODE_MODULE_VERSION 57 significa che è necessario aggiornare il nodo a v8.x, quindi è necessario aggiornare il nodo. e quindi è necessario eseguire il npm rebuildcomando per ricostruire il progetto


3
La risposta stessa dovrebbe essere utile senza il link.
Tobias Wilfert,

Ho avuto un problema simile lamentandomi da 67 a 57. Nel mio caso ho effettuato il downgrade da 11/stablea 8/stablecon $ snap refresh node --channel=8/stableUbuntu. Dopo quello fatto $ npm rebuild.
Daniel,

Questa risposta è sbagliata NODE_MODULE_VERSION 51significa che il .nodefile viene compilato su una versione del nodo usando NODE_MODULE_VERSION 51. E l'utente utilizza una versione del nodo usando 57, quindi non può usarlo direttamente. L'utente dovrebbe ricostruire la compilazione.
alsotang

11

Molto probabilmente hai questo problema a causa del pacchetto-lock.json. In qualche modo sembra impedirti di ricompilare o ricostruire le tue dipendenze, anche se corri esplicitamente npm rebuild. Ho eseguito tutto quanto segue per risolverlo per me:

rm package-lock.json;
rm -rf node_modules;
npm install;

10

Assicurati di avere installato una sola versione di NodeJS. Prova questi due:

node --version
sudo node --version

Inizialmente ho installato NodeJS dal sorgente, ma era la versione errata e 'aggiornato' alla versione più recente utilizzando nvm, che non rimuove alcuna versione precedente e installa solo la versione desiderata nella /root/.nvm/versions/...directory. Quindi sudo nodepuntava ancora alla versione precedente, mentre nodepuntava alla versione più recente.


gah! Perché non ci ho pensato! Grazie per la pubblicazione, così posso affrontarepalpalm.
labirinto,

3

Ho avuto lo stesso errore ma stavo cercando di eseguire un'applicazione nodo usando un contenitore Docker.

L'ho risolto aggiungendo un file .dockerignore per ignorare la directory node_modules per assicurarmi che quando l'immagine docker viene compilata, crea i pacchetti nativi per l'immagine che volevo (Alpine) invece di copiarli sui node_modules compilati per il mio host (Debian) .


Ha funzionato per me ... ha aggiunto: node_modules/epackage-lock.json
Giovanne Afonso

3

Si scopre che il mio problema era un errore dell'utente: assicurati che la versione del nodo che stai usando per l'esecuzione sia la stessa che stai usando quando esegui un'installazione npm o un thread.

Uso NVM per il nodo versioning e eseguivo il thread tramite un terminale, ma il mio IDE era impostato per utilizzare una versione precedente del nodo durante l'esecuzione e stava generando l'errore sopra. Corrispondenza della versione del mio IDE del nodo nella configurazione di esecuzione al nodo - versione risolta il problema.


1

Ho avuto un problema simile con robotjs. C'era del codice deprecato che richiedeva il nodo v11, ma avevo già compilato il codice dell'elettrone su v12. Quindi ho sostanzialmente lo stesso errore. Qui non ha funzionato nulla mentre stavo essenzialmente cercando di ricostruire l'elettrone e le altre mie dipendenze nel nodo v11 dalla v12.

Ecco cosa ho fatto (parte di questo si basa sulla risposta di Chitzui, credito a cui è dovuto il credito):

  • Eseguire il backup di package.json
  • eliminare completamente la cartella node_modules
  • elimina completamente package_lock.json
  • elimina package.json (verrà reinizializzato in seguito)
  • Chiudi tutti gli editor aperti e altre finestre cmd che si trovano nella directory del progetto.
  • eseguire npm initper reinizializzare il pacchetto, quindi i dati mancanti con il vecchio pacchetto di backup.json
  • correre npm i
  • risolto :)

Spero che questo ti aiuti.


1

Per i moduli elettronici, installare ricostruzione elettronica.

Format:
electron-rebuild -o <module_name> -v <electron version>

Example:
electron-rebuild -o myaddon -v 9.0.0-beta.6

Specificare la stessa versione installata nella directory corrente

Potresti avere questa esperienza in cui una build standard di nodo-gyp segnalerebbe come 64, quindi una ricostruzione elettronica di base segnalerebbe 76, non fino a quando aggiungi -v con la versione esatta passa alla versione 80 effettiva (per 9.0.0-beta. 6)


1

Ho eliminato la cartella node_modules ed eseguito npm installe la mia applicazione è stata avviata senza errori.


0

Ho ricevuto questo errore durante l'esecuzione della mia app con systemd:

ExecStart=/usr/local/bin/node /srv/myapp/server.js

Ma stavo usando una versione diversa per npm installnella shell:

$ which node
/home/keith/.nvm/versions/node/v8.9.0/bin/node

Se questa è la tua configurazione, puoi codificare la versione del nodo nel file di servizio o seguire una soluzione alternativa come questa .


0

Dopo aver provato cose diverse. Questo ha funzionato.

Elimina la cartella dei moduli del nodo ed esegui

npm i


0

È possibile rimuovere completamente bcrypt e installare bcryptjs. È circa il 30% più lento, ma non ha dipendenze, quindi nessun problema installarlo.

npm i -S bcryptjs && npm uninstall -S bcrypt

L'abbiamo installato con successo per le nostre applicazioni. Abbiamo riscontrato problemi con bcrypt che non veniva compilato su istanze AWS per Node v8.x


0

Potenzialmente, l'incoerenza delle versioni del nodo JS è ciò che causa il problema. Come indicato nella documentazione . Assicurati di utilizzare una delle versioni di lts. Ad esempio, specificalo nel Dockerfile:

# Pull lts from docker registry
FROM node:8.12.0

# ...

0

Controllare la versione del nodo che si sta utilizzando, potrebbe non corrispondere a quanto previsto.


0

Ho avuto lo stesso problema e nessuna di queste soluzioni ha funzionato e non so perché, hanno funzionato per me in passato per problemi simili.

Comunque per risolvere il problema ho appena ricostruito manualmente il pacchetto usando node-pre-gyp

cd node_modules/bcrypt
node-pre-gyp rebuild

E tutto ha funzionato come previsto.

Spero che questo ti aiuti


0

Ho appena ricevuto questo errore mentre eseguivo kadence lo script "kadence" installato controlla prima i nodijs e esegue il nodo solo se non vi sono nodi. Ho l'ultima versione del nodo collegata nella mia directory ~ / bin ma nodejs esegue una versione precedente che avevo dimenticato di disinstallare ma che non ha mai causato problemi fino ad ora.

Quindi le persone con questo problema potrebbero verificare se node e nodejs eseguono effettivamente la stessa versione del nodo ...


0

Nel mio caso, ero nel mio proxy dell'ufficio che stava saltando alcuni pacchetti. Quando sono uscito dal mio proxy di ufficio e ho provato a farlo npm installha funzionato. Forse questo aiuta a qualcuno.

Ma mi ci sono volute diverse ore per identificare che era la ragione.


0

Nel mio caso stavo correndo nodejsinvece di node. A causa nodejsdell'installazione da parte del gestore pacchetti:

# which node
/home/user/.nvm/versions/node/v11.6.0/bin/node

# which nodejs
/usr/bin/nodejs

0

corri npm config set python python2.7e corri di npm installnuovo la festa è in corso.


0

devi solo eseguire questo sotto i comandi:

$ rm -rf node_modules
$ rm -rf yarn.lock
$ yarn install

e infine

$ ./node_modules/.bin/electron-rebuild

non dimenticare di yarn add electron-rebuildnon esistere nelle tue dipendenze.


0

Ho riscontrato questo errore due volte in un'app elettronica e si è scoperto che il problema era che alcuni moduli devono essere utilizzati dal processo principale anziché dal processo di rendering. L'errore si è verificato utilizzando pdf2json e anche node-canvas. Lo spostamento del codice che richiedeva quei moduli da index.htm (il processo di rendering) a main.js (il processo principale) ha risolto l'errore e l'app è stata ricostruita e funzionava perfettamente. Ciò non risolverà il problema in tutti i casi, ma è la prima cosa da verificare se si sta scrivendo un'app elettronica e si verifica questo errore.


0

Ecco cosa ha funzionato per me. Sto usando il modulo di nodo loop-back con Electron Js e ho affrontato questo problema. Dopo aver provato molte cose seguenti ha funzionato per me.

Nel tuo file package.json negli script aggiungi le seguenti righe:

  ... 
"scripts": {
        "start": "electron .",
        "rebuild": "electron-rebuild"
    
      },
...

E quindi eseguire il comando seguente npm run rebuild

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.