Düğüm - NODE_MODULE_VERSION 51 kullanılarak farklı bir Node.js sürümüne karşı derlendi


142

Terminalde bir düğüm uygulaması çalıştırıyorum. Son zamanlarda v8.5.0 düğümüne yükseltme yaptık, ancak şu hatayı alıyorum:

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)

bunu nasıl çözeceğimize dair bir fikri olan?


Lütfen doğru cevabı işaretleyin
Shanika Ediriweera

Yanıtlar:


119

Modül klasörünü ( bcrypt) klasörden kaldırmanız node_modulesve yeniden yüklemeniz gerekir, aşağıdaki komutları kullanın:

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

7
Çalışmıyor. Benim için sorun zmqpaketle ilgili ve onu yeniden oluşturmak veya silmek ve npm installingher şeyden önce yardımcı olmuyor. Her zaman aynı problem.
trusktr

7
@trusktr node_modules tamamen klasörü silmeyi deneyin: rm -rf node_modules. Npm önbelleğini temizle: npm cache clearpackage-lock.json veya npm-shrinkwrap.json dosyasını kaldırın. Ve sadece o koşudan sonra npm i.
alexmac

1
Güzel bir mesaj aldım, "Umarım ne yaptığını biliyorsun." önbelleği temizlediğimde. Ben o kadar da değil, ama görünüşe göre öyle! İşe yaradı.
ouflak

gerek yok / asla gerekmiyor npm cache clear, diğer komutlar bunu yaptı
caub

Benim için çalıştı! Tam hatam şuydu: "'/ Users / <kullaniciadi> / Downloads / intro-to-graphql / node_modules / bcrypt / lib / bağlama / bcrypt_lib .node' modülü, NODE_MODULE_VERSION 64 kullanılarak farklı bir Node.js sürümüne karşı derlendi."
Olağandışı

73

Aynı sorunu yaşadım ve burada belirtilen hiçbir şey benim için işe yaramadı. İşte benim için işe yarayan:

  1. main.jsElektron tarafından çalıştırılan dosyada ihtiyacınız olan tüm bağımlılıkları gerektirir . (bu benim için ilk önemli kısım gibi görünüyordu)
  2. Elektron yeniden oluşturma paketini npm i -D electron-rebuildeklemek için çalıştırın
  3. node-modulesKlasörü ve packages-lock.jsondosyayı kaldırın .
  4. npm iTüm modülleri kurmak için çalıştırın .
  5. Her şeyi yeniden oluşturmak için ./node_modules/.bin/electron-rebuild( .\node_modules\.bin\electron-rebuild.cmdWindows için) çalıştırın

Öyle çok önemli çalıştırmak için ./node_modules/.bin/electron-rebuilddoğrudan sonra npm iaksi takdirde benim mac çalışmadı.

Umarım hayal kırıklığına uğramış ruhlara yardım edebilirim.


2
Sadece elektronu yeniden inşa etmek benim için bir iş yaptı. Benim durumumda modülleri silmeye ve yeniden yüklemeye gerek yok.
Ocak'ta

1
Peki o zaman şanslısın @stoefln ne yazık ki bazı kurulumlarda bu kesin adımları tek tek takip etmek çok önemlidir.
19'de chitzui

1
Windows'tayım ama bu çözüm de benim için çalıştı. Bu soruna neyin sebep olduğunu açıklayabilir misiniz? Bu Electron ile ilgili bir hata olabilir mi?
jbinvnt

@jbinvnt evet, Elektron sınırlaması biliniyor github.com/SimulatedGREG/electron-vue/issues/872
Konstantin Vdovkin

Boru hattı veya herhangi bir komutla sadece elektron yeniden nasıl çalıştırılır
Kirataka

58

Yapmalisin paketini yeniden ve çok ikili olduğunu güncellemek için UÖM'yi söyle . Deneyin:

npm rebuild bcrypt --update-binary

@robertklep bu komutla ilgili bir soruyu yanıtladı, bak .

Sadece yeniden oluşturma sorunumu çözmedi, bu benim uygulamada iyi çalışıyor.

Umarım yardımcı olur!


1
yeniden oluşturma amacı ikili güncellemek olduğunu düşündüm, ne zaman ikili güncelleme OLMADAN yeniden oluşturmak istiyorum?
bobmoff

1
@bobmoff Ben sadece yeniden inşa kullanmaya çalışırken aynı şekilde düşünüyordum, docs onlar bizim için her şeyi güncelleme diyor .. ama sadece hatalar - Benim sorunum eski çalışan yerel depo yeni bir yerel NodeJS / NPM sürümüyle senkronize etmek oldu. Bu yüzden etrafa baktım ve "--update-binary", onu gerçekten zorlamayı ve doğal olarak yeniden inşa etmekle ilgili şekilde değiştirmeyi söylemenin yoluydu.
RPichioli

30

Basitçe çalıştırın:

npm uninstall bcrypt

Bunu takiben:

npm install bcrypt(veya npm install, eğer bcrypt sizin de bağımlılık olarak bildirilmiş package.json dosyası)


13

bu bağlantıyı görebilirsiniz

düğüm noktanızı doğru kontrol etmek için. NODE_MODULE_VERSION 51 kullanmak, düğüm sürümünüzün nodejs v7.x olduğu anlamına gelir, NODE_MODULE_VERSION 57 gerektirir, düğümünüzü v8.x sürümüne yükseltmeniz gerekir, bu nedenle düğümünüzü yükseltmeniz gerekir. ve sonra npm rebuildprojenizi yeniden oluşturmak için çalıştır komutuna ihtiyacınız var


3
Cevabın kendisi bağlantı olmadan yardımcı olmalıdır.
Tobias Wilfert

Benzer bir sorun 67 ile 57 arasında şikayet vardı. Benim durumumda ile Ubuntu aşağı 11/stableiçin düşürme . Ondan sonra . 8/stable$ snap refresh node --channel=8/stable$ npm rebuild
Daniel

Bu cevap yanlış. dosyanın NODE_MODULE_VERSION 51 kullanılarak bazı düğüm sürümlerine karşı derlendiği NODE_MODULE_VERSION 51anlamına gelir. .nodeVe kullanıcı 57 kullanan bir düğüm sürümü kullanıyor, bu yüzden doğrudan kullanamaz. Kullanıcı derlemeyi yeniden oluşturmalıdır.
alsotang

11

Büyük olasılıkla package-lock.json nedeniyle bu sorunla karşılaşıyorsunuz. Her nasılsa, açıkça çalıştırsanız bile, bağımlılıklarınızı yeniden derlemenizi veya yeniden oluşturmanızı engelliyor gibi görünüyor npm rebuild. Benim için düzeltmek için aşağıdakileri yaptım:

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

10

Yalnızca bir NodeJS sürümünün yüklü olduğundan emin olun. Bu ikisini deneyin:

node --version
sudo node --version

Başlangıçta NodeJS'yi kaynaktan yükledim, ancak yanlış sürümdü ve nvmönceki sürümleri kaldırmayan ve yalnızca istenen sürümü /root/.nvm/versions/...dizine yükleyen en yeni sürüme yükseltildi . Bu yüzden sudo nodehala nodeyeni sürüme işaret ederken , önceki sürüme işaret ediyordu.


gah! Bunu neden düşünmedim! Gönderdiğin için teşekkürler facepalm.
labirent

3

Aynı hatayı aldım ama Docker kapsayıcısını kullanarak bir düğüm uygulaması çalıştırmaya çalışıyordum.

Docker görüntüsü oluşturulduğunda, ana bilgisayarım (Debian) için derlenen node_modules üzerinden kopyalamak yerine istediğim görüntü (Alpine) için yerel paketleri oluşturduğundan emin olmak için node_modules dizinini yoksaymak için bir .dockerignore dosyası ekleyerek düzelttim. .


Worked for me ... ekledi: node_modules/vepackage-lock.json
Giovanne Afonso

3

Sorunumun kullanıcı hatası olduğu ortaya çıktı: Çalıştırmak için kullandığınız düğüm sürümünün, bir npm kurulumu veya ipliği çalıştırırken kullandığınızdan emin olun.

Düğümü sürümlemek için NVM kullanıyorum ve bir terminal aracılığıyla iplik çalıştırıyordum, ancak IDE çalıştığımda düğümün eski bir sürümünü kullanacak şekilde ayarlandı ve yukarıdaki hatayı atıyordu. IDE'nin run config içindeki düğüm versiyonunu düğüme eşleştirmek - sürüm sorunu düzeltildi.


1

Robotjs ile benzer bir sorun yaşadım. Düğüm v11 gerektiren bazı kullanımdan kaldırılmış kod vardı, ancak v12'de zaten elektron kodu derlemiştim. Temelde aynı hatayı aldım. Temelde elektron ve diğer bağımlılıklarımı v12 düğümü v11 düğümüne yeniden oluşturmaya çalışırken hiçbir şey işe yaramadı.

Yaptığım şey (bunun bir kısmı chitzui'nin cevabına, kredinin vadesi kredi) dayanmaktadır:

  • Yedekleme package.json
  • node_modules klasörünü tamamen sil
  • package_lock.json dosyasını tamamen sil
  • package.json dosyasını silin (daha sonra yeniden başlayacak)
  • Projenin dizinindeki tüm açık editörleri ve diğer cmd pencerelerini kapatın.
  • npm initpaketi yeniden başlatmak için çalıştırın , ardından eski yedeklenmiş paketle eksik veriler.
  • Çalıştırmak npm i
  • sabit :)

Bu yardımcı olur umarım.


1

Elektron modülleri için elektron yeniden kurulumunu kurun.

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

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

Geçerli dizine yüklediğiniz sürümü belirtme

Standart bir düğüm-gyp derlemesinin 64 olarak rapor edeceği bu deneyime sahip olabilirsiniz, o zaman temel bir elektron yeniden oluşturma 76'yı rapor eder, siz tam sürümüyle -v'yi gerçek sürüm 80'e (9.0.0-beta için) çarpana kadar eklemezsiniz. 6)


1

Node_modules klasörünü sildim ve çalıştırdım npm installve uygulamam hatasız başladı.


0

Uygulamamı systemd ile çalıştırırken bu hatayı aldım:

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

Ama npm installkabuk için farklı bir sürüm kullanıyordum :

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

Bu kurulum ise, her iki hizmet dosyasında düğüm sürümünü hardcode ya da benzeri bir geçici çözüm takip edebilir bu bir .


0

Farklı şeyler denedikten sonra. Bu işe yaradı.

Düğüm modülleri klasörünüzü silin ve çalıştırın

npm i


0

Bcrypt'i tamamen kaldırabilir ve bcryptjs yükleyebilirsiniz. ~% 30 daha yavaştır, ancak bağımlılıkları yoktur, bu yüzden onu yükleyen acı yoktur.

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

Uygulamalarımız için başarıyla yükledik. Bcrypt ile Node v8.x için AWS örneklerini derlememeyle ilgili sorunlar yaşadık


0

Potansiyel olarak, sorunun JS sürümleri tutarsızlığı soruna neden olur. Belgelerde belirtildiği gibi . Lts sürümünden birini kullandığınızdan emin olun. Örneğin, Dockerfile dosyasında bunu belirtin:

# Pull lts from docker registry
FROM node:8.12.0

# ...

0

Kullandığınız Düğüm sürümünü kontrol edin, beklenenler arasında bir uyuşmazlık olabilir.


0

Aynı sorunu yaşadım ve bu çözümlerin hiçbiri işe yaramadı ve nedenini bilmiyorum, benzer sorunlar için geçmişte benim için çalıştılar.

Her neyse, sorunu çözmek için sadece node-pre-gyp kullanarak paketi manuel olarak yeniden oluşturdum

cd node_modules/bcrypt
node-pre-gyp rebuild

Ve her şey beklendiği gibi çalıştı.

Bu yardımcı olur umarım


0

Sadece çalışan bu hata var kadence nodejs yüklü "kadence" komut dosyası çekleri birinci ve hiçbir nodejs varsa sadece düğümü çalıştırır. Düğümün ~ / bin dizinine bağlı en son sürümü var ama nodejs kaldırmayı unuttuğum ama şimdiye kadar hiç sorun yaşamadığım eski bir sürümü çalıştırıyor.

Bu nedenle bu sorunu olan insanlar, düğüm ve düğümlerin aslında düğümün aynı sürümünü çalıştırıp çalıştırmadığını kontrol edebilirler ...


0

Benim durumumda, bazı paketleri atlayan ofis proxy'imdeydim. Ofis proxy'imden çıkıp yapmaya npm installçalıştığımda işe yaradı. Belki bu birisine yardım eder.

Ama bunun sebebini tanımlamak birkaç saatimi aldı.


0

Benim durumum nodejsyerine koşuyordum node. Nedeniyle nodejspaket yöneticisi tarafından yüklenen:

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

# which nodejs
/usr/bin/nodejs


0

aşağıdaki komutları çalıştırmanız yeterlidir:

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

ve sonunda

$ ./node_modules/.bin/electron-rebuild

yarn add electron-rebuildbağımlılıklarınızda yoksa unutmayınız .


0

Bu hatayı bir elektron uygulamasında iki kez vurdum ve sorun, bazı modüllerin render işlemi yerine ana işlemden kullanılması gerektiği ortaya çıktı. Hata, pdf2json ve ayrıca düğüm tuvali kullanılarak meydana geldi. Bu modülleri gerektiren kodu index.htm'den (oluşturma işlemi) main.js'ye (ana işlem) taşımak hatayı düzeltti ve uygulama yeniden oluşturuldu ve mükemmel bir şekilde çalıştı. Bu, her durumda sorunu çözmez, ancak bir elektron uygulaması yazıp yazmadığınızı kontrol etmek ve bu hatayla karşılaşmak için ilk şeydir.


0

İşte benim için işe yarayan. Electron Js ile geri döngü düğümü modülünü kullanıyorum ve bu sorunla karşı karşıya kaldım . Takip eden birçok şeyi denedikten sonra benim için çalıştı.

Senin içinde package.json dosyanın komut aşağıdaki satırları ekleyin:

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

Ve sonra aşağıdaki komutu çalıştırın npm run rebuild

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.