नोड - NODE_MODULE_VERSION 51 का उपयोग करके एक अलग Node.js संस्करण के खिलाफ संकलित किया गया था


142

मैं टर्मिनल पर एक नोड एप्लिकेशन चला रहा हूं। हाल ही में नोड v8.5.0 में अपग्रेड किया गया है, लेकिन मुझे यह त्रुटि मिल रही है:

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)

कुछ पता है इसे कैसे हल करना है?


कृपया सही उत्तर दें
शनिका एडिअवेरा सेप

जवाबों:


119

आपको फ़ोल्डर से मॉड्यूल फ़ोल्डर ( bcrypt) को हटाने node_modulesऔर इसे पुनर्स्थापित करने की आवश्यकता है, निम्न कमांड का उपयोग करें:

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

7
काम नहीं करता है। मेरे लिए, समस्या zmqपैकेज के साथ है , और इसे npm installingफिर से बनाना या हटाना सभी मदद नहीं करता है। हमेशा एक ही समस्या।
trusktr

7
@trusktr नोड_मॉडल्स फ़ोल्डर को पूरी तरह से हटाने का प्रयास करें rm -rf node_modules:। npm cache clearNpm कैश साफ़ करें: पैकेज- lock.json या npm-compresswrap.json निकालें। और उसके बाद ही चला npm i
एलेक्समैक

1
एक अच्छा संदेश मिला, "मुझे यकीन है कि आप जानते हैं कि आप क्या कर रहे हैं।" जब मैंने वह कैश क्लियर किया। मुझे इतना नहीं है, लेकिन जाहिर है आप करते हैं! इसने काम कर दिया।
ouflak

आप / करने की जरूरत कभी नहीं नहीं है npm cache clear, अन्य आदेशों इसे बनाया
caub

मेरे लिए काम किया! मेरी सटीक त्रुटि थी - "मॉड्यूल '/ उपयोगकर्ता / <उपयोगकर्ता नाम / डाउनलोड / परिचय-से-रेखांकन / नोड_modules / bcrypt / lib / बाइंडिंग / bcrypt_lib .node' को NODE_MODULE_VERSION 64 का उपयोग करते हुए एक अलग Node.js संस्करण के खिलाफ संकलित किया गया था।"
theusual

73

मुझे भी यही समस्या थी और यहाँ वर्णित कुछ भी मेरे लिए काम नहीं करता था। यहाँ मेरे लिए क्या काम किया गया है:

  1. main.jsइलेक्ट्रॉन द्वारा चलाई जाने वाली फ़ाइल में सभी निर्भरता की आवश्यकता होती है । (यह मेरे लिए पहला महत्वपूर्ण हिस्सा लग रहा था)
  2. इलेक्ट्रॉन-पुनर्निर्माण पैकेज npm i -D electron-rebuildको जोड़ने के लिए चलाएँ
  3. node-modulesफ़ोल्डर, साथ ही packages-lock.jsonफ़ाइल को हटा दें ।
  4. npm iसभी मॉड्यूल स्थापित करने के लिए चलाएँ ।
  5. सब कुछ के पुनर्निर्माण के लिए ./node_modules/.bin/electron-rebuild( .\node_modules\.bin\electron-rebuild.cmdविंडोज के लिए) चलाएँ

यह मेरे मैक पर काम नहीं करने के बाद सीधे चलाने के लिए बहुत महत्वपूर्ण है ।./node_modules/.bin/electron-rebuildnpm i

मुझे आशा है कि मैं कुछ निराश आत्माओं की मदद कर सकता हूं।


2
सिर्फ इलेक्ट्रान-पुनर्निर्माण के काम ने मेरे लिए काम किया। मेरे मामले में मॉड्यूल को हटाने और पुनर्स्थापित करने की कोई आवश्यकता नहीं है।
स्टोएफ़्लन

1
ठीक है, तो आप भाग्यशाली @stoefln मिला दुर्भाग्य से कुछ सेटअपों में एक-एक करके इन सटीक चरणों का पालन करना महत्वपूर्ण है।
चिट्टुई

1
मैं विंडोज पर हूं लेकिन इस समाधान ने मेरे लिए भी काम किया। क्या आप बता सकते हैं कि इस समस्या का क्या कारण है? क्या यह इलेक्ट्रॉन के साथ बग हो सकता है?
jbinvnt

@jbinvnt हाँ, यह इलेक्ट्रॉन सीमा में जाना जाता है github.com/SimulatedGREG/electron-vue/issues/872
Konstantin Vdovkin

पाइपलाइन या किसी भी कमांड के माध्यम से केवल इलेक्ट्रॉन-पुनर्निर्माण कैसे चलाया जाए
किराकत

57

आपको पैकेज को फिर से बनाना होगा और npm को यह बाइनरी भी अपडेट करना होगा । प्रयत्न:

npm rebuild bcrypt --update-binary

@robertklep ने इस कमांड, लुक के साथ एक सापेक्ष प्रश्न का उत्तर दिया ।

केवल पुनर्निर्माण ने मेरी समस्या हल नहीं की है, यह मेरे आवेदन में ठीक काम करता है।

आशा करता हूँ की ये काम करेगा!


1
मैंने सोचा कि पुनर्निर्माण का उद्देश्य बाइनरी को अपडेट करना था, बाइनरी को अपडेट किए बिना आप कब पुनर्निर्माण करना चाहेंगे?
बोबमॉफ

1
@bobmoff मैं उसी तरह सोच रहा था कि केवल पुनर्निर्माण का उपयोग करने की कोशिश कर रहा है, डॉक्स का कहना है कि वे हमारे लिए सब कुछ अपडेट करते हैं .. लेकिन केवल त्रुटियां - मेरी समस्या एक नई स्थानीय NodeJS / NPM संस्करण के लिए स्थानीय रिपोजिटरी काम करने वाली मेरी विरासत को सिंक करने की थी। इसलिए मैंने चारों ओर देखा और "--अपडेट-बाइनरी" यह वास्तव में बल देने और इसे स्वाभाविक रूप से पुनर्निर्माण के साथ करने के तरीके को बदलने का तरीका था।
आरपीचियोली

30

बस चलाते हैं:

npm uninstall bcrypt

के बाद:

npm install bcrypt(या npm install, यदि bcrypt आपके पैकेज में निर्भरता के रूप में घोषित किया गया है। Json फ़ाइल)


13

आप इस लिंक को देख सकते हैं

अपने नोड वर्जन की सही जाँच करने के लिए। NODE_MODULE_VERSION 51 का उपयोग करने का अर्थ है कि आपका नोड संस्करण नोडज v7.x है, इसके लिए NODE_MODULE_VERSION 57 की आवश्यकता है, इसका मतलब है कि आपको अपने नोड को v8.x में अपग्रेड करने की आवश्यकता है, इसलिए आपको अपना नोड अपग्रेड करने की आवश्यकता है। और फिर आपको npm rebuildअपने प्रोजेक्ट के पुनर्निर्माण के लिए रन कमांड की आवश्यकता है


3
लिंक के बिना ही उत्तर सहायक होना चाहिए।
टोबियास विल्फर्ट

एक ऐसी ही समस्या 67 से 57. करने के लिए शिकायत मेरे मामले मैं से डाउनग्रेड में था 11/stableकरने के लिए 8/stableके साथ $ snap refresh node --channel=8/stableUbuntu में। उसके बाद किया $ npm rebuild
डैनियल

यह उत्तर गलत है। NODE_MODULE_VERSION 51इसका मतलब है कि .nodeफ़ाइल NODE_MODULE_VERSION 51 का उपयोग करके कुछ नोड संस्करण के खिलाफ संकलित की गई है। और उपयोगकर्ता 57 का उपयोग करके नोड संस्करण का उपयोग कर रहा है, इसलिए वह सीधे इसका उपयोग नहीं कर सकता है। उपयोगकर्ता को संकलन का पुनर्निर्माण करना चाहिए।
अल्टोसांग

11

सबसे अधिक संभावना है कि आपके पास पैकेज- lock.json के कारण यह समस्या है। किसी भी तरह यह आपको recompiling या अपनी निर्भरता के पुनर्निर्माण से रोकता है, भले ही आप स्पष्ट रूप से चलाते हों npm rebuild। मैंने इसे ठीक करने के लिए सभी निम्नलिखित भागे:

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

10

सुनिश्चित करें कि आपके पास केवल NodeJS का एक संस्करण स्थापित है। इन दोनों का प्रयास करें:

node --version
sudo node --version

मैंने शुरू में NodeJS को स्रोत से स्थापित किया था, लेकिन यह गलत संस्करण था और nvmइसका उपयोग करके नवीनतम संस्करण में 'अपग्रेड' किया गया था , जो किसी भी पिछले संस्करण को नहीं हटाता है, और केवल /root/.nvm/versions/...निर्देशिका में वांछित संस्करण को स्थापित करता है । तो sudo nodeअभी भी पिछले संस्करण nodeकी ओर इशारा कर रहा था , जबकि नए संस्करण की ओर इशारा कर रहा था।


गाह! मैंने ऐसा क्यों नहीं सोचा! पोस्ट करने के लिए धन्यवाद तो मैं सामना कर सकता हूं।
भूलभुलैया

3

मुझे वही त्रुटि मिली लेकिन मैं एक डॉकटर कंटेनर का उपयोग करके नोड एप्लिकेशन को चलाने की कोशिश कर रहा था।

मैंने यह सुनिश्चित करने के लिए नोड .modules निर्देशिका को अनदेखा करने के लिए एक .dockerignore फ़ाइल जोड़कर इसे ठीक किया कि जब docker छवि बनाता है, तो यह मेरे होस्ट (Debian) के लिए संकलित नोड -modules पर प्रतिलिपि बनाने के बजाय मेरी इच्छित छवि के लिए मूल पैकेज बनाता है ।


मेरे लिए काम किया ... जोड़ा गया: node_modules/औरpackage-lock.json
Giovanne Afonso

3

मेरी समस्या उपयोगकर्ता-त्रुटि बताती है: सुनिश्चित करें कि आप चलाने के लिए जिस नोड का उपयोग कर रहे हैं उसका संस्करण वही है जो आप npm इंस्टॉल या यार्न को चलाते समय उपयोग कर रहे हैं।

मैं नोडिंग संस्करण के लिए एनवीएम का उपयोग करता हूं और टर्मिनल के माध्यम से यार्न चला रहा था, लेकिन मेरी आईडीई को पुराने संस्करण के नोड का उपयोग करने के लिए सेट किया गया था जब वह चल रहा था और यह त्रुटि को ऊपर फेंक रहा था। रन ID में नोड के लिए मेरे IDE के संस्करण से मेल खाते से नोड --version ने समस्या को ठीक किया।


1

मुझे रोबॉज के साथ भी ऐसी ही समस्या थी। कुछ पदावनत कोड थे जिन्हें नोड v11 की आवश्यकता थी, लेकिन मैंने पहले ही v12 पर इलेक्ट्रॉन कोड संकलित कर लिया था। इसलिए मुझे मूल रूप से वही त्रुटि मिली। यहाँ कुछ भी काम नहीं किया क्योंकि मैं मूल रूप से इलेक्ट्रॉन और मेरे अन्य निर्भरता v12 से नोड v11 में पुनर्निर्माण करने की कोशिश कर रहा था।

यहाँ मैंने क्या किया (इसका कुछ हिस्सा चिट्ज़ुई के उत्तर, क्रेडिट जहां क्रेडिट देय है) पर आधारित है:

  • बैक अप पैकेज। Json
  • पूरी तरह से node_modules फ़ोल्डर हटाएं
  • पूरी तरह से package_lock.json हटाएं
  • हटाएं package.json (बाद में मजबूत होगा)
  • किसी भी खुले संपादक और अन्य cmd विंडो को बंद करें जो प्रोजेक्ट की डायरेक्टरी में हैं।
  • npm initपैकेज को फिर से चलाने के लिए, फिर पुराने समर्थित पैकेज के साथ डेटा गायब। json
  • Daud npm i
  • तय :)

उम्मीद है की यह मदद करेगा।


1

इलेक्ट्रॉन मॉड्यूल के लिए, इलेक्ट्रॉन-पुनर्निर्माण स्थापित करें।

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

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

उसी संस्करण को निर्दिष्ट करें जिसे आपने वर्तमान निर्देशिका में स्थापित किया है

आपके पास यह अनुभव हो सकता है जहां एक मानक नोड-जिप बिल्ड 64 के रूप में रिपोर्ट करेगा, फिर एक बुनियादी इलेक्ट्रॉन-पुनर्निर्माण 76 की रिपोर्ट करेगा, जब तक कि आप सही संस्करण के साथ -v नहीं जोड़ते हैं यह वास्तविक संस्करण 80 (9.0.0-बीटा के लिए) तक बढ़ जाता है। 6)


1

मैंने नोड_मॉडल्स फ़ोल्डर को हटा दिया और चला गया npm installऔर मेरा आवेदन बिना किसी त्रुटि के शुरू हो गया।


0

मुझे यह त्रुटि तब मिली जब मैंने अपने ऐप को systemd के साथ चलाया:

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

लेकिन मैं npm installशेल के लिए एक अलग संस्करण का उपयोग कर रहा था :

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

यदि यह आपका सेटअप है, तो आप सेवा फ़ाइल में नोड संस्करण को हार्डकोड कर सकते हैं या इस तरह एक वर्कअराउंड का पालन कर सकते हैं ।


0

अलग-अलग चीजों को आजमाने के बाद। यह काम किया।

अपना नोड मॉड्यूल फ़ोल्डर हटाएं और चलाएं

npm i

0

मुझे उसी मुद्दे का सामना करना पड़ा, जिसमें gpc मॉड्यूल था और मेरे मामले में, मैं इलेक्ट्रॉन का उपयोग कर रहा था और env चर "निर्यात npm_config_target = 1.2.3" में एक गलत इलेक्ट्रॉन संस्करण सेट किया है, इसे उस इलेक्ट्रॉन संस्करण में सेट कर रहा हूं जिसका उपयोग मैं इस मुद्दे को हल करने में कर रहा हूं। मेरा अंत। आशा है कि यह किसी ऐसे व्यक्ति की मदद करता है जो यहाँ दिए गए env चर को सेट करता है ( https://electronjs.org/docs/tutorial/using-native-node-modules#the-npm-way )


0

आप पूरी तरह से bcrypt को हटा सकते हैं और bcryptjs को स्थापित कर सकते हैं। यह ~ 30% धीमा है, लेकिन इसकी कोई निर्भरता नहीं है, इसलिए इसे स्थापित करने में कोई दर्द नहीं है।

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

हमने इसे अपने अनुप्रयोगों के लिए सफलतापूर्वक स्थापित किया है। हमारे पास नोड v8.x के लिए AWS उदाहरणों पर संकलन नहीं करने के साथ समस्या थी


0

संभावित रूप से, नोड जेएस संस्करणों की असंगति समस्या का कारण बनती है। जैसा कि प्रलेखन में कहा गया है । एलटीएस रिलीज में से एक का उपयोग करना सुनिश्चित करें। उदाहरण के लिए इसे अपने डॉकफाइल में निर्दिष्ट करें:

# Pull lts from docker registry
FROM node:8.12.0

# ...

0

आपके द्वारा उपयोग किए जा रहे नोड संस्करण की जाँच करें, यह अपेक्षित होने के बीच एक बेमेल हो सकता है।


0

मेरे पास एक ही समस्या थी और इनमें से किसी भी समाधान ने काम नहीं किया और मुझे पता नहीं क्यों, उन्होंने अतीत में मेरे लिए इसी तरह की समस्याओं के लिए काम किया।

वैसे भी समस्या को हल करने के लिए मैंने सिर्फ नोड-प्री-जिप का उपयोग करके मैन्युअल रूप से पैकेज का पुनर्निर्माण किया है

cd node_modules/bcrypt
node-pre-gyp rebuild

और सब कुछ उम्मीद के मुताबिक काम किया।

उम्मीद है की यह मदद करेगा


0

मुझे बस यह त्रुटि मिली कि रनिंग के लिए स्थापित "कडेंस" स्क्रिप्ट नोड्ज के लिए पहले चेक करता है और नोड नोड्स न होने पर केवल नोड चलाता है। मेरे पास अपने ~ / बिन निर्देशिका में नोड का नवीनतम संस्करण जुड़ा हुआ है लेकिन नोडज एक पुराने संस्करण को चलाता है जिसे मैं अनइंस्टॉल करना भूल गया था लेकिन कभी भी अभी तक समस्या नहीं हुई।

तो इस समस्या वाले लोग जाँच सकते हैं कि क्या नोड और नोडज वास्तव में नोड का एक ही संस्करण चलाते हैं ...


0

मेरे मामले में, मैं अपने कार्यालय के प्रॉक्सी में था जो कुछ पैकेजों को छोड़ रहा था। जब मैं अपने कार्यालय के प्रॉक्सी से बाहर आया और npm installकाम करने की कोशिश की । शायद यह किसी के लिए मदद करता है।

लेकिन मुझे इसकी पहचान करने में कई घंटे लग गए।


0

मेरे मामले में मैं nodejsइसके बजाय भाग रहा था nodenodejsपैकेज मैनेजर द्वारा स्थापित किए जाने के कारण :

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

# which nodejs
/usr/bin/nodejs


0

आपको बस इसे नीचे कमांड चलाने की आवश्यकता है:

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

और अंत में

$ ./node_modules/.bin/electron-rebuild

yarn add electron-rebuildअगर यह आपकी निर्भरता में मौजूद नहीं है, तो मत भूलना ।


0

मैंने इस त्रुटि को एक इलेक्ट्रॉन ऐप में दो बार मारा है और यह समस्या सामने आई कि कुछ मॉड्यूल को रेंडर प्रक्रिया के बजाय मुख्य प्रक्रिया से उपयोग करने की आवश्यकता है। Pdf2json और नोड-कैनवास का उपयोग करके त्रुटि हुई। Index.htm (रेंडर प्रक्रिया) से main.js (मुख्य प्रक्रिया) के लिए उन मॉड्यूल को आवश्यक कोड को ले जाने से त्रुटि और एप्लिकेशन को फिर से बनाया गया और पूरी तरह से चला गया। यह सभी मामलों में समस्या को ठीक नहीं करेगा लेकिन यह जांचने की पहली बात है कि क्या आप एक इलेक्ट्रॉन ऐप लिख रहे हैं और इस त्रुटि में भाग रहे हैं।


0

यहाँ मेरे लिए क्या काम किया है। मैं इलेक्ट्रॉन जेएस के साथ लूपेड-बैक नोड मॉड्यूल का उपयोग कर रहा हूं और इस मुद्दे का सामना कर रहा हूं। निम्नलिखित कई चीजों की कोशिश करने के बाद मेरे लिए काम किया।

स्क्रिप्ट में अपने पैकेज.जॉन फ़ाइल में निम्न पंक्तियाँ जोड़ें:

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

और फिर निम्नलिखित कमांड चलाएँ npm run rebuild

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.