Node - dikompilasi dengan versi Node.js yang berbeda menggunakan NODE_MODULE_VERSION 51

142

Saya menjalankan aplikasi simpul di terminal. Baru-baru ini ditingkatkan ke simpul v8.5.0, tetapi saya mendapatkan kesalahan ini:

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)

Ada ide untuk mengatasi ini?

JoeTidee
sumber
Harap tandai jawaban yang benar
Shanika Ediriweera

Jawaban:

119

Anda perlu menghapus folder modul ( bcrypt) dari node_modulesfolder dan menginstalnya kembali, gunakan perintah berikut:

$ rm -rf node_modules/bcrypt
$ npm install
// or
$ yarn
alexmac
sumber
7
Tidak bekerja Bagi saya, masalahnya adalah pada zmqpaket, dan membangun kembali atau menghapusnya dan npm installingsekali lagi tidak membantu. Selalu masalah yang sama.
trusktr
7
@trusktr Cobalah untuk menghapus node_modules folder sepenuhnya: rm -rf node_modules. Hapus npm cache:, npm cache clearhapus package-lock.json atau npm-shrinkwrap.json. Dan hanya setelah lari itu npm i.
alexmac
1
Mendapat pesan yang bagus, "Saya harap Anda tahu apa yang Anda lakukan." ketika saya melakukan cache itu jelas. Aku tidak terlalu banyak, tetapi ternyata kamu melakukannya! Itu berhasil.
ouflak
Anda tidak / tidak perlu npm cache clear, perintah lain membuatnya
caub
Bekerja untukku! Kesalahan saya sebenarnya adalah - "Modul '/ Users / <username> / Downloads / intro-to-graphql / node_modules / bcrypt / lib / binding / bcrypt_lib .node' dikompilasi dengan versi Node.js berbeda menggunakan NODE_MODULE_VERSION 64."
theusual
73

Saya memiliki masalah yang sama dan tidak ada yang disebutkan di sini bekerja untuk saya. Inilah yang bekerja untuk saya:

  1. Memerlukan semua dependensi yang Anda butuhkan dalam main.jsfile yang dijalankan oleh elektron. (Ini sepertinya menjadi bagian penting pertama bagi saya)
  2. Jalankan npm i -D electron-rebuilduntuk menambahkan paket membangun kembali elektron
  3. Hapus node-modulesfolder, dan juga packages-lock.jsonfile.
  4. Jalankan npm iuntuk menginstal semua modul.
  5. Jalankan ./node_modules/.bin/electron-rebuild( .\node_modules\.bin\electron-rebuild.cmduntuk Windows) untuk membangun kembali semuanya

Sangat penting untuk menjalankan ./node_modules/.bin/electron-rebuildlangsung setelah npm iitu tidak berfungsi pada mac saya.

Saya harap saya bisa membantu beberapa jiwa yang frustrasi.

chitzui
sumber
2
Hanya menjalankan electron-rebuild melakukan pekerjaan untuk saya. Tidak perlu menghapus dan menginstal ulang modul dalam kasus saya.
stoefln
1
Kalau begitu Anda beruntung @stoefln sayangnya sangat penting untuk mengikuti langkah-langkah tepat ini satu per satu di beberapa pengaturan.
chitzui
1
Saya menggunakan Windows tetapi solusi ini juga berfungsi untuk saya. Bisakah Anda menjelaskan apa yang menyebabkan masalah ini? Mungkinkah ini bug dengan Elektron?
jbinvnt
@ jbinvnt ya, itu diketahui pembatasan elektron Elecub.com/SimulatedGREG/electron-vue/issues/872
Konstantin Vdovkin
Bagaimana menjalankan hanya membangun kembali elektron melalui pipa atau perintah apa pun
Kirataka
57

Anda harus membangun kembali paket dan memberi tahu npm untuk memperbarui binernya juga . Mencoba:

npm rebuild bcrypt --update-binary

@robertklep menjawab pertanyaan relatif dengan perintah ini, lihat .

Hanya rekondisi yang belum menyelesaikan masalah saya, ini berfungsi dengan baik di aplikasi saya.

Semoga ini bisa membantu!

RPichioli
sumber
1
Saya berpikir bahwa tujuan membangun kembali adalah untuk memperbarui biner, kapan Anda ingin membangun kembali TANPA memperbarui biner?
bobmoff
1
@ bobmoff Saya berpikir dengan cara yang sama mencoba menggunakan hanya membangun kembali, dokumen mengatakan mereka memperbarui segalanya untuk kita .. tetapi hanya kesalahan - Masalah saya adalah untuk menyinkronkan warisan saya bekerja repositori lokal ke versi NodeJS / NPM lokal baru. Jadi saya melihat sekeliling dan "--update-binary" adalah cara untuk mengatakannya untuk benar-benar memaksa dan mengubahnya seperti yang harus dilakukan dengan membangun kembali secara alami.
RPichioli
30

Cukup jalankan:

npm uninstall bcrypt

Diikuti oleh:

npm install bcrypt(atau npm install, jika bcrypt dinyatakan sebagai dependensi dalam file package.json Anda )

Frosty Z
sumber
13

Anda dapat melihat tautan ini

untuk memeriksa simpul simpul Anda dengan benar. menggunakan NODE_MODULE_VERSION 51 berarti bahwa versi node Anda adalah nodejs v7.x, membutuhkan NODE_MODULE_VERSION 57 berarti Anda perlu memutakhirkan node Anda ke v8.x, sehingga Anda perlu memutakhirkan node Anda. dan kemudian Anda perlu menjalankan npm rebuildperintah untuk membangun kembali proyek Anda

pengapuran gao
sumber
3
Jawabannya sendiri seharusnya membantu tanpa tautan.
Tobias Wilfert
Punya masalah serupa mengeluh dari 67 ke 57. Dalam kasus saya, saya downgrade dari 11/stableke 8/stabledengan $ snap refresh node --channel=8/stabledi Ubuntu. Setelah itu $ npm rebuild.
Daniel
Jawaban ini salah. NODE_MODULE_VERSION 51berarti .nodefile dikompilasi terhadap beberapa versi node menggunakan NODE_MODULE_VERSION 51. Dan pengguna menggunakan versi node menggunakan 57, jadi ia tidak dapat menggunakannya secara langsung. Pengguna harus membangun kembali kompilasi.
alsotang
11

Kemungkinan besar Anda memiliki masalah ini karena package-lock.json. Entah bagaimana itu tampaknya menghalangi Anda mengkompilasi ulang atau membangun kembali dependensi Anda, bahkan jika Anda menjalankannya secara eksplisit npm rebuild. Saya menjalankan semua yang berikut untuk memperbaikinya untuk saya:

rm package-lock.json;
rm -rf node_modules;
npm install;
smets.kevin
sumber
10

Pastikan Anda hanya menginstal satu versi NodeJS. Coba dua ini:

node --version
sudo node --version

Saya awalnya menginstal NodeJS dari sumber, tetapi itu adalah versi yang salah dan 'ditingkatkan' ke versi terbaru menggunakan nvm, yang tidak menghapus versi sebelumnya, dan hanya menginstal versi yang diinginkan di /root/.nvm/versions/...direktori. Jadi sudo nodemasih menunjuk ke versi sebelumnya, sementara nodemenunjuk ke versi yang lebih baru.

Barkles
sumber
gah! Kenapa aku tidak memikirkan ini! Terima kasih telah memposting sehingga saya dapat facepalm.
labirin
3

Saya mendapat kesalahan yang sama tetapi saya mencoba menjalankan aplikasi simpul menggunakan wadah Docker.

Saya memperbaikinya dengan menambahkan file .dockerignore untuk mengabaikan direktori node_modules untuk memastikan bahwa ketika gambar buruh pelabuhan membangun, itu membangun paket asli untuk gambar yang saya inginkan (Alpine) alih-alih menyalin node_modules yang dikompilasi untuk host saya (Debian) .

Mat
sumber
Bekerja untuk saya ... menambahkan: node_modules/danpackage-lock.json
Giovanne Afonso
3

Ternyata masalah saya adalah kesalahan pengguna: pastikan versi node yang Anda gunakan untuk menjalankan adalah sama dengan yang Anda gunakan saat menjalankan npm install atau yarn.

Saya menggunakan NVM untuk versi node dan menjalankan benang melalui terminal, tetapi IDE saya diatur untuk menggunakan versi yang lebih lama dari node ketika menjalankan dan itu melempar kesalahan di atas. Mencocokkan versi node IDE saya dalam menjalankan config ke node --versi memperbaiki masalah.

Craig Odell
sumber
1

Saya punya masalah serupa dengan robotjs. Ada beberapa kode usang yang membutuhkan simpul v11, tapi saya sudah mengkompilasi kode elektron pada v12. Jadi pada dasarnya saya mendapatkan kesalahan yang sama. Tidak ada yang bekerja di sini karena saya pada dasarnya mencoba untuk membangun kembali elektron dan dependensi saya yang lain ke dalam simpul v11 dari v12.

Inilah yang saya lakukan (bagian dari ini didasarkan pada jawaban chitzui, kredit di mana kredit jatuh tempo):

  • Cadangkan package.json
  • sepenuhnya menghapus folder node_modules
  • hapus sepenuhnya package_lock.json
  • hapus package.json (akan diinstal ulang nanti)
  • Tutup semua editor terbuka dan jendela cmd lainnya yang ada di direktori proyek.
  • jalankan npm inituntuk menginstal kembali paket, kemudian data yang hilang dengan package.json yang dicadangkan lama
  • Lari npm i
  • diperbaiki :)

Semoga ini membantu.

AirFusion
sumber
1

Untuk modul Electron, instal pembangunan kembali elektron.

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

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

Tentukan versi yang sama yang telah Anda instal di direktori saat ini

Anda mungkin memiliki pengalaman ini di mana membangun simpul-gyp standar akan melaporkan sebagai 64, maka elektron-membangun kembali dasar akan melaporkan 76, tidak sampai Anda menambahkan -v dengan versi tepat itu menabrak versi aktual 80 (untuk 9.0.0-beta. 6)

tomm1e
sumber
1

Saya menghapus folder node_modules dan menjalankan npm installdan aplikasi saya mulai tanpa kesalahan.

Dushan
sumber
0

Saya mendapatkan kesalahan ini ketika menjalankan aplikasi saya dengan systemd:

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

Tapi saya menggunakan versi yang berbeda untuk npm installdi shell:

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

Jika ini adalah pengaturan Anda, Anda bisa membuat hardcode versi node dalam file layanan atau mengikuti solusi seperti ini .

Keith
sumber
0

Setelah mencoba berbagai hal. Ini berhasil.

Hapus folder modul simpul Anda dan jalankan

npm i
Ankit Pandey
sumber
0

Saya menghadapi masalah yang sama dengan modul grpc dan dalam kasus saya, saya menggunakan elektron dan telah menetapkan versi elektron yang salah dalam variabel env "export npm_config_target = 1.2.3", mengaturnya ke versi elektron yang saya gunakan untuk menyelesaikan masalah pada akhir saya. Semoga ini bisa membantu seseorang yang menetapkan variabel env seperti yang diberikan di sini ( https://electronjs.org/docs/tutorial/using-native-node-modules#the-npm-way )

cat kelopak mata
sumber
0

Anda dapat menghapus bcrypt sepenuhnya dan menginstal bcryptjs. ~ 30% lebih lambat, tetapi tidak memiliki dependensi, jadi tidak ada rasa sakit menginstalnya.

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

Kami telah menginstalnya dengan sukses untuk aplikasi kami. Kami memiliki masalah dengan bcrypt yang tidak dikompilasi pada instance AWS untuk Node v8.x

Daniel Nitu
sumber
0

Secara potensial, ketidakkonsistenan dari simpul JS versi adalah yang menyebabkan masalah. Sebagaimana dinyatakan dalam dokumentasi . Pastikan untuk menggunakan salah satu rilisnya. Misalnya tentukan ini di Dockerfile Anda:

# Pull lts from docker registry
FROM node:8.12.0

# ...
kmos.w
sumber
0

Periksa versi Node yang Anda gunakan, mungkin ketidakcocokan antara apa yang diharapkan.

cjjenkinson
sumber
0

Saya memiliki masalah yang sama dan tidak ada solusi yang bekerja dan saya tidak tahu mengapa, mereka bekerja untuk saya di masa lalu untuk masalah yang sama.

Pokoknya untuk menyelesaikan masalah saya baru saja secara manual membangun kembali paket menggunakan node-pre-gyp

cd node_modules/bcrypt
node-pre-gyp rebuild

Dan semuanya berjalan seperti yang diharapkan.

Semoga ini membantu

Wezzy
sumber
0

Saya baru saja mendapatkan kesalahan ini menjalankan kadence script "kadence" diinstal memeriksa nodejs pertama dan hanya menjalankan node jika tidak ada nodejs. Saya memiliki versi terbaru dari simpul yang terhubung ke direktori ~ / bin saya tetapi nodejs menjalankan versi yang lebih lama yang saya lupa untuk hapus instalasinya tetapi tidak pernah menyebabkan masalah sampai sekarang.

Jadi orang dengan masalah ini mungkin memeriksa apakah simpul dan simpul benar-benar menjalankan versi simpul yang sama ...

Bill Burdick
sumber
0

Dalam kasus saya, saya berada di proksi kantor saya yang melewatkan beberapa paket. Ketika saya keluar dari proxy kantor saya dan mencoba melakukannya npm installberhasil. Mungkin ini membantu seseorang.

Tetapi saya butuh beberapa jam untuk mengidentifikasi bahwa itulah alasannya.

Balasubramanian S
sumber
0

Dalam kasus saya, saya nodejsmalah berlari node. Karena nodejsdiinstal oleh manajer paket:

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

# which nodejs
/usr/bin/nodejs
portforwardpodcast
sumber
0

jalankan npm config set python python2.7dan jalankan npm installlagi pestanya dihidupkan.

Tebogo Mahlalela
sumber
0

Anda hanya perlu menjalankan perintah di bawah ini:

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

dan akhirnya

$ ./node_modules/.bin/electron-rebuild

jangan lupa yarn add electron-rebuildjika itu tidak ada dalam dependensi Anda.

Ehsan Barkhordar
sumber
0

Saya telah mengenai kesalahan ini dua kali dalam aplikasi elektron dan ternyata masalahnya adalah bahwa beberapa modul perlu digunakan dari proses utama daripada proses render. Kesalahan terjadi menggunakan pdf2json dan juga node-canvas. Memindahkan kode yang memerlukan modul-modul itu dari index.htm (proses render) ke main.js (proses utama) memperbaiki kesalahan dan aplikasi dibangun kembali dan berjalan dengan sempurna. Ini tidak akan memperbaiki masalah dalam semua kasus tetapi ini adalah hal pertama yang memeriksa apakah Anda menulis aplikasi elektron dan mengalami kesalahan ini.

Prajna
sumber
0

Inilah yang bekerja untuk saya. Saya menggunakan modul simpul looped-back dengan Electron Js dan menghadapi masalah ini. Setelah mencoba banyak hal berikut ini berhasil bagi saya.

Dalam file package.json Anda dalam skrip tambahkan baris berikut:

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

Dan kemudian jalankan perintah berikut npm run rebuild

sediq khan
sumber