Node - был скомпилирован с другой версией Node.js с использованием NODE_MODULE_VERSION 51

Я запускаю приложение node на терминале. Недавно обновили до node 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)

Любая идея, как это решить?

Ответ 1

Вам нужно удалить папку модуля (bcrypt) из папки node_modules и переустановить ее, используя следующие команды:

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

Ответ 2

Вам нужно перестроить пакет и сообщить npm, чтобы обновить его также в двоичном формате. Попробуйте:

npm rebuild bcrypt --update-binary

@robertklep ответил на относительный вопрос с этой командой, посмотреть.

Только перестройка не решила мою проблему, это прекрасно работает в моем приложении.

Надеюсь, что это поможет!

Ответ 3

У меня была та же проблема, и ничто из упомянутого здесь не помогло мне. Вот что сработало для меня:

  1. Укажите все необходимые зависимости в файле main.js который запускается с помощью электрона. (это казалось первой важной частью для меня)
  2. Запустите npm я -D electron-rebuild чтобы добавить пакет восстановления электронов
  3. Удалите папку node-modules, а также файл packages-lock.json.
  4. Запустите npm i чтобы установить все модули.
  5. Запустите ./node_modules/.bin/electron-rebuild чтобы восстановить все

Очень важно запустить ./node_modules/.bin/electron-rebuild сразу после npm i иначе это не сработало на моем Mac.

Я надеюсь, что смогу помочь некоторым разочарованным душам.

Ответ 4

Просто запустите:

npm uninstall bcrypt

С последующим:

npm install bcrypt (или npm install, если bcrypt объявлен как зависимость в вашем файле package.json)

Ответ 5

Скорее всего, у вас есть эта проблема из-за package-lock.json. Каким-то образом это, кажется, мешает вам перекомпилировать или перестраивать ваши зависимости, даже если вы явно запускаете npm rebuild. Я запустил все следующее, чтобы исправить это для меня:

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

Ответ 6

Вы можете увидеть эту ссылку

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

Ответ 7

npm rebuild bcrypt --update-binary

У меня такая же пословица, но другой пакет, я запускаю этот код и разбираюсь с ним

Ответ 8

Убедитесь, что у вас установлена только одна версия NodeJS. Попробуйте эти два:

node --version
sudo node --version

Первоначально я установил NodeJS из исходного кода, но это была неправильная версия и "была обновлена" до последней версии с помощью nvm, который не удаляет предыдущие версии и устанавливает только нужную версию в /root/.nvm/versions/... каталог. Таким образом, sudo node все еще указывал на предыдущую версию, в то время как node указывал на более новую версию.

Ответ 9

Я получил ту же ошибку, но я пытался запустить приложение узла, используя контейнер Docker.

Я исправил это, добавив файл.dockerignore, чтобы игнорировать каталог node_modules, чтобы убедиться, что при сборке образа докера он создает собственные пакеты для нужного мне образа (Alpine) вместо того, чтобы копировать ноды модуля, скомпилированные для моего хоста (Debian),

Ответ 10

Я получил эту ошибку при запуске моего приложения с помощью systemd:

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

Но я использовал другую версию для npm install в оболочке:

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

Если это ваша настройка, вы можете либо скопировать код node в служебный файл, либо следовать обходному пути, например этот.

Ответ 11

Попробовав разные вещи. Это сработало.

Удалите папку ваших узловых модулей и запустите

npm i

Ответ 12

Я столкнулся с той же проблемой с модулем grpc, и в моем случае я использовал электрон и установил неверную версию электрона в переменной env "export npm_config_target = 1.2.3", установив ее на версию электрона, которую я использую, решил проблему на мой конец Надеюсь, что это поможет кому-то, кто устанавливает переменные env, как указано здесь (https://electronjs.org/docs/tutorial/using-native-node-modules#the-npm-way)

Ответ 13

Вы можете полностью удалить bcrypt и установить bcryptjs. Это на ~ 30% медленнее, но не имеет никаких зависимостей, поэтому его не составит труда установить.

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

Мы успешно установили его для наших приложений. У нас были проблемы с некомпиляцией bcrypt на экземплярах AWS для Node v8.x

Ответ 14

Потенциально проблема заключается в несовместимости версий JS узла. Как указано в документации. Обязательно используйте один из релизов lts. Например, укажите это в вашем Dockerfile:

# Pull lts from docker registry
FROM node:8.12.0

# ...

Ответ 15

Проверьте версию Node, которую вы используете, может быть несоответствие между тем, что ожидается.

Ответ 16

У меня была такая же проблема, и ни одно из этих решений не сработало, и я не знаю почему, в прошлом они работали на меня для подобных проблем.

В любом случае, чтобы решить проблему, я просто вручную пересобрал пакет, используя node-pre-gyp

cd node_modules/bcrypt
node-pre-gyp rebuild

И все заработало как положено.

Надеюсь это поможет

Ответ 17

Я только что получил эту ошибку при запуске kadence, установленный скрипт "kadence" сначала проверяет наличие nodejs и запускает узел только при отсутствии nodejs. У меня есть последняя версия узла, связанная с моим каталогом ~/bin, но nodejs запускает старую версию, которую я забыл удалить, но до сих пор проблем не возникало.

Таким образом, люди с этой проблемой могут проверить, действительно ли node и nodejs запускают одну и ту же версию узла...

Ответ 18

В моем случае я был в моем офисе прокси, который пропускал некоторые пакеты. Когда я вышел из офиса прокси и попытался npm install все npm install. Может быть, это помогает кому-то.

Но мне потребовалось несколько часов, чтобы понять, в чем причина.

Ответ 19

В моем случае я использовал nodejs вместо node. Из-за nodejs что nodejs устанавливается менеджером пакетов:

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

# which nodejs
/usr/bin/nodejs

Ответ 20

У меня была похожая проблема с robotjs. Существовал некоторый устаревший код, который требовал узла v11, но я уже скомпилировал электронный код на v12. Так что я получил в основном ту же ошибку. Ничто здесь не сработало, так как я в основном пытался перестроить электрон и другие мои зависимости в узел v11 из v12.

Вот что я сделал (часть этого основана на ответе chitzui, кредит, где кредит должен):

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

Надеюсь это поможет.

Ответ 21

Никто из них не работал для меня, но это:

npm install 
npm start

Ответ 22

запустите npm config set python python2.7 и снова запустите npm install, вечеринка включена.

Ответ 23

Оказывается, моя проблема была в пользовательской ошибке: убедитесь, что версия узла, которую вы используете для работы, такая же, которую вы используете при запуске npm install или yarn.

Я использую NVM для версионного узла и выполнял работу пряжи через терминал, но моя среда IDE была настроена на использование более старой версии узла при запуске, и она выдавала ошибку выше. Сопоставление моей версии IDE узла в конфигурации конфигурации с узлом --version устранило проблему.