устанавливается менеджером пакетов:

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

Есть идеи, как это решить?

Ответы на вопрос(18)

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

# Pull lts from docker registry
FROM node:8.12.0

# ...

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

npm i

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

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

 Giovanne Afonso09 мая 2018 г., 05:27
Работал на меня ... добавил:node_modules/ а такжеpackage-lock.json

медленнее, но не имеет никаких зависимостей, поэтому его не составит труда установить.

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

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

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

$ rm -rf node_modules/bcrypt
$ npm install
// or
$ yarn
 ouflak23 июл. 2018 г., 09:02
Получил приятное сообщение: «Я очень надеюсь, что вы знаете, что делаете». когда я сделал этот кэш ясно. Меня не так много, но, видимо, вы делаете! Это сработало.
 caub27 июл. 2018 г., 09:48
Вам не нужно / никогда не нужноnpm cache clearдругие команды сделали это
 trusktr29 мая 2018 г., 08:38
Не работает Для меня проблема сzmq пакет, и восстановление или удаление иnpm installing все снова не помогает. Всегда одна и та же проблема.
 alexmac01 июн. 2018 г., 11:09
@trusktr Попробуйте полностью удалить папку node_modules:rm -rf node_modules, Очистить кэш npm:npm cache clear, удалите package-lock.json или npm-shrinkwrap.json. И только после этого запускаnpm i.

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

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

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

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

cd node_modules/bcrypt
node-pre-gyp rebuild

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

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

Вы должнывосстановить пакет а такжескажите нпм обновить тоже бинарный, Пытаться:

npm rebuild bcrypt --update-binary

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

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

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

 bobmoff23 нояб. 2018 г., 09:27
я подумал, что целью перестройки было обновить бинарный файл, когда вы хотите перестроить БЕЗ обновления бинарного файла?
 RPichioli23 нояб. 2018 г., 18:07
@bobmoff Я думал так же, пытаясь использовать только пересборку, в документах говорится, что они обновляют все для нас ... но только ошибки - моя проблема состояла в том, чтобы синхронизировать мой прежний рабочий локальный репозиторий с новой локальной версией NodeJS / NPM. Поэтому я огляделся по сторонам, и «--update-binary» был способом сказать ему, что он действительно форсирует и изменяет его так, как это имеет отношение к естественному восстановлению.

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

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

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

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

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

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

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

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

 jgierer1219 дек. 2018 г., 21:33
Спасибо, это было единственное, что сработало для меня.
 kishorekumaru11 февр. 2019 г., 07:54
Отлично помогает на последней электронной версии
 chitzui23 янв. 2019 г., 15:31
Ну, тогда вам повезло, @stoefln, к сожалению, очень важно следовать этим точным шагам один за другим в некоторых настройках.
 stoefln23 янв. 2019 г., 08:54
Просто запуск электронного перестроения сделал всю работу за меня. Нет необходимости удалять и переустанавливать модули в моем случае.

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

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

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

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

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

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

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

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

# which nodejs
/usr/bin/nodejs

ссылка

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

 Daniel10 февр. 2019 г., 20:07
Была аналогичная проблема с жалобами от 67 до 57. В моем случае я понизил11/stable в8/stable с участием$ snap refresh node --channel=8/stable в убунту. После этого сделал$ npm rebuild.
 Tobias Wilfert04 янв. 2019 г., 09:37
Сам ответ должен быть полезен без ссылки.

npm uninstall bcrypt

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

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

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

node --version
sudo node --version

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

Ваш ответ на вопрос