Вузол - був складений проти іншої версії Node.js за допомогою NODE_MODULE_VERSION 51


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)

Будь-яка ідея, як це вирішити?


Будь ласка, позначте правильну відповідь
Shanika Ediriweera

Відповіді:


119

Вам потрібно вийняти папку модуля ( bcrypt) з node_modulesпапки та встановити її заново, використовуючи наступні команди:

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

7
Не працює. Для мене проблема з zmqпакетом, і відновлення або видалення його і npm installingзнову не допомагає. Завжди одна і та ж проблема.
trusktr

7
@trusktr Спробуйте видалити папку node_modules повністю: rm -rf node_modules. Очистити кеш-пам'ять npm: npm cache clearвидаліть пакет-lock.json або npm-shrinkwrap.json. І тільки після цього бігати npm i.
alexmac

1
Отримав приємне повідомлення: "Я впевнений, що ти знаєш, що ти робиш". коли я зробив чіткий кеш. Мене не так багато, але, мабуть, ти робиш! Це спрацювало.
ouflak

вам не потрібно / ніколи не потрібно npm cache clear, інші команди зробили це
caub

Працювали для мене! Моя точна помилка була - "Модуль" / Користувачі / <ім'я користувача> / Завантаження / вступ до graphql / node_modules / bcrypt / lib / зв'язування / bcrypt_lib .node "був складений для іншої версії Node.js за допомогою NODE_MODULE_VERSION 64."
звичайний

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для Windows), щоб відновити все

Це дуже важливо , щоб працювати ./node_modules/.bin/electron-rebuildбезпосередньо після того, як в npm iіншому випадку він не працює на моєму комп'ютері.

Я сподіваюся, що я міг допомогти розчарованим душам.


2
Тільки що запущена електронна перебудова зробила роботу для мене. У моєму випадку не потрібно видаляти та перевстановлювати модулі.
stoefln

1
Ну, тоді вам пощастило @stoefln, на жаль, важливо дотримуватися цих точних кроків по черзі в деяких настройках.
chitzui

1
Я в Windows, але це рішення працювало і для мене. Чи можете ви пояснити, що викликає цю проблему? Може це помилка з Електроном?
jbinvnt

@jbinvnt так, відомо обмеження електронів github.com/SimulatedGREG/electron-vue/isissue/872
Костянтин Вдовкін

Як запустити лише відновлення електронів через конвеєр або будь-яку команду
Кіратака

57

Вам потрібно відновити пакунок і сказати npm для оновлення його також . Спробуйте:

npm rebuild bcrypt --update-binary

@robertklep відповів на відповідне запитання за допомогою цієї команди, дивіться .

Тільки відновлення не вирішило мою проблему, це прекрасно працює в моєму додатку.

Сподіваюся, це допомагає!


1
я думав, що метою відновлення було оновлення двійкового файлу, коли ви хочете відновити БЕЗ оновлення двійкового?
Бобмоф

1
@bobmoff Я думав так само, намагаючись використовувати лише перебудову, документи говорять, що вони все для нас оновлюють .. але лише помилки. Моя проблема полягала в синхронізації мого застарілого локального сховища до нової локальної версії NodeJS / NPM. Тож я оглянувся навколо, і "- update-binary" - це спосіб сказати це дійсно змусити і змінити так, як це має відношення до відновлення природним шляхом.
RPichioli

30

Просто запустіть:

npm uninstall bcrypt

Далі:

npm install bcrypt(або npm install, якщо bcrypt оголошено як залежність у вашому файлі package.json )


13

ви можете побачити це посилання

щоб перевірити верзон вашого вузла правильно. використання NODE_MODULE_VERSION 51 означає, що версія вашого вузла nodejs v7.x, вимагає NODE_MODULE_VERSION 57 означає, що вам потрібно оновити свій вузол до v8.x, тому вам потрібно оновити свій вузол. і тоді вам потрібно запустити npm rebuildкоманду, щоб відновити проект


3
Сама відповідь має бути корисною без посилання.
Тобіас Вілферт

Якщо б подібна проблема , скаржачись від 67 до 57. У моєму випадку я зведення від 11/stableдо 8/stableз $ snap refresh node --channel=8/stableв Ubuntu. Після цього зробив $ npm rebuild.
Даніель

Ця відповідь неправильна. NODE_MODULE_VERSION 51означає, що .nodeфайл компілюється з деякою версією вузла за допомогою NODE_MODULE_VERSION 51. І користувач використовує версію вузла, використовуючи 57, тому він не може використовувати його безпосередньо. Користувач повинен відновити компіляцію.
такожtangtang

11

Найімовірніше, у вас виникає ця проблема через пакет-lock.json. Якось, здається, це заважає вам перекомпілювати або перебудувати свої залежності, навіть якщо ви явно запущені 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як вказували на нову версію.


га! Чому я не подумав про це! Дякую за публікацію, щоб я могла зіткнутися з facepalm.
лабіринт

3

Я отримав таку ж помилку, але я намагався запустити додаток для вузла за допомогою контейнера Docker.

Я виправив це, додавши файл .dockerignore, щоб ігнорувати каталог node_modules, щоб переконатися, що коли зображення docker будується, він будує нативні пакети для зображення, яке я хотів (Alpine), а не копіювати через node_modules, складені для мого хоста (Debian) .


Працював для мене ... додав: node_modules/іpackage-lock.json
Джованні Афонсо

3

Виявляється, моєю проблемою була помилка користувача: переконайтеся, що версія вузла, яку ви використовуєте для запуску, та сама, яку ви використовуєте під час запуску npm install або пряжі.

Я використовую NVM для версії версії і запускав пряжу через термінал, але мій IDE був налаштований використовувати старішу версію вузла під час запуску, і він кидав помилку вище. Збігання версії мого IDE-вузла в конфігурації запуску до вузла - перехід усунув проблему.


1

У мене була схожа проблема з роботами. Був якийсь застарілий код, який потребував вузла v11, але я вже склав електронний код на v12. Тож я в основному отримав ту саму помилку. Ніщо тут не спрацювало, оскільки я в основному намагався відновити електрон та інші мої залежності в вузол v11 від v12.

Ось що я зробив (частина цього ґрунтується на відповіді чітцуї, кредит, де належить кредит):

  • Створіть резервну копію package.json
  • повністю видалити папку node_modules
  • повністю видалити package_lock.json
  • видаліть package.json (буде повторно впроваджено пізніше)
  • Закрийте будь-які відкриті редактори та інші вікна cmd, що знаходяться в каталозі проекту.
  • запустіть npm initдля повторного введення пакета, а потім відсутні дані зі старим резервним файлом package.json
  • бігати npm i
  • виправлено :)

Сподіваюся, це допомагає.


1

Для модулів Electron встановіть перебудову електрон.

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

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

Вкажіть ту ж версію, яку ви встановили у поточному каталозі

У вас може виникнути такий досвід, коли стандартна збірка node-gyp повідомила б про 64, тоді основна електронна перебудова повідомила б про 76, але поки ви не додасте -v з точною версією, вона стикається до фактичної версії 80 (для 9.0.0-бета). 6)


1

Я видалив папку node_modules і запустився, 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

Я зіткнувся з тією ж проблемою, що і з модулем grpc, і в моєму випадку я використовував електрон і встановив неправильну електронну версію в змінній env "export 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

Ми успішно встановили це для наших програм. У нас виникли проблеми з тим, що bcrypt не збирається на екземплярах AWS для Node v8.x


0

Потенційно непослідовність версій версій JS - це те, що викликає проблему. Як зазначено в документації . Обов’язково використовуйте один із випусків lts. Наприклад, вкажіть це у своєму Dockerfile:

# Pull lts from docker registry
FROM node:8.12.0

# ...

0

Перевірка використовуваної вами версії вузла може виявитися невідповідністю між очікуваними.


0

У мене була така ж проблема, і жодне з цих рішень не працювало, і я не знаю чому, вони працювали для мене в минулому для подібних проблем.

У всякому разі, щоб вирішити проблему, я просто вручну відновлював пакунок за допомогою node-pre-gyp

cd node_modules/bcrypt
node-pre-gyp rebuild

І все працювало як очікувалося.

Сподіваюся, це допомагає


0

Я щойно отримав цю помилку при запуску каденції встановлений сценарій "kadence" спершу перевіряє наявність nodejs, і він запускає лише вузол, якщо немає nodejs. У мене остання версія вузла пов'язана з моїм каталогом ~ / bin, але nodejs виконує старішу версію, яку я забув видалити, але ніколи не викликав проблем.

Тож люди з цією проблемою можуть перевірити, чи вузол та nodejs насправді виконують одну і ту ж версію вузла ...


0

У моєму випадку я був у своєму офісі проксі, який пропускав деякі пакунки. Коли я вийшов зі свого офісного проксі і спробував це зробити, npm installце спрацювало. Можливо, це комусь допомагає.

Але мені знадобилося кілька годин, щоб визначити, що це було причиною.


0

У моєму випадку я бігав nodejsзамість node. Завдяки nodejsвстановленню менеджера пакунків:

# 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

Ось що для мене спрацювало. Я використовую петлю назад модуль вузлового вузла з Electron Js і зіткнувся з цією проблемою. Перепробувавши багато речей, наступні працювали для мене.

У файл package.json у сценарії додайте наступні рядки:

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

А потім запустіть наступну команду npm run rebuild

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.