Ответ 1
Вам нужно удалить папку модуля (bcrypt
) из папки node_modules
и переустановить ее, используя следующие команды:
$ rm -rf node_modules/bcrypt
$ npm install
// or
$ yarn
Я запускаю приложение 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)
Любая идея, как это решить?
Вам нужно удалить папку модуля (bcrypt
) из папки node_modules
и переустановить ее, используя следующие команды:
$ rm -rf node_modules/bcrypt
$ npm install
// or
$ yarn
Вам нужно перестроить пакет и сообщить npm, чтобы обновить его также в двоичном формате. Попробуйте:
npm rebuild bcrypt --update-binary
@robertklep ответил на относительный вопрос с этой командой, посмотреть.
Только перестройка не решила мою проблему, это прекрасно работает в моем приложении.
Надеюсь, что это поможет!
У меня была та же проблема, и ничто из упомянутого здесь не помогло мне. Вот что сработало для меня:
main.js
который запускается с помощью электрона. (это казалось первой важной частью для меня)npm я -D electron-rebuild
чтобы добавить пакет восстановления электроновnode-modules
, а также файл packages-lock.json
.npm i
чтобы установить все модули../node_modules/.bin/electron-rebuild
чтобы восстановить все Очень важно запустить ./node_modules/.bin/electron-rebuild
сразу после npm i
иначе это не сработало на моем Mac.
Я надеюсь, что смогу помочь некоторым разочарованным душам.
Просто запустите:
npm uninstall bcrypt
С последующим:
npm install bcrypt
(или npm install
, если bcrypt объявлен как зависимость в вашем файле package.json)
Скорее всего, у вас есть эта проблема из-за package-lock.json. Каким-то образом это, кажется, мешает вам перекомпилировать или перестраивать ваши зависимости, даже если вы явно запускаете npm rebuild
. Я запустил все следующее, чтобы исправить это для меня:
rm package-lock.json;
rm -rf node_modules;
npm install;
Вы можете увидеть эту ссылку
проверить правильность вершины вашего узла. использование NODE_MODULE_VERSION 51 означает, что версия вашего узла - это nodejs v7.x, требуется NODE_MODULE_VERSION 57 означает, что вам нужно обновить ваш узел до v8.x, поэтому вам нужно обновить свой узел. а затем вам нужно запустить команду npm rebuild
чтобы перестроить ваш проект
npm rebuild bcrypt --update-binary
У меня такая же пословица, но другой пакет, я запускаю этот код и разбираюсь с ним
Убедитесь, что у вас установлена только одна версия NodeJS. Попробуйте эти два:
node --version
sudo node --version
Первоначально я установил NodeJS из исходного кода, но это была неправильная версия и "была обновлена" до последней версии с помощью nvm
, который не удаляет предыдущие версии и устанавливает только нужную версию в /root/.nvm/versions/...
каталог. Таким образом, sudo node
все еще указывал на предыдущую версию, в то время как node
указывал на более новую версию.
Я получил ту же ошибку, но я пытался запустить приложение узла, используя контейнер Docker.
Я исправил это, добавив файл.dockerignore, чтобы игнорировать каталог node_modules, чтобы убедиться, что при сборке образа докера он создает собственные пакеты для нужного мне образа (Alpine) вместо того, чтобы копировать ноды модуля, скомпилированные для моего хоста (Debian),
Я получил эту ошибку при запуске моего приложения с помощью 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 в служебный файл, либо следовать обходному пути, например этот.
Попробовав разные вещи. Это сработало.
Удалите папку ваших узловых модулей и запустите
npm i
Я столкнулся с той же проблемой с модулем grpc, и в моем случае я использовал электрон и установил неверную версию электрона в переменной env "export npm_config_target = 1.2.3", установив ее на версию электрона, которую я использую, решил проблему на мой конец Надеюсь, что это поможет кому-то, кто устанавливает переменные env, как указано здесь (https://electronjs.org/docs/tutorial/using-native-node-modules#the-npm-way)
Вы можете полностью удалить bcrypt и установить bcryptjs. Это на ~ 30% медленнее, но не имеет никаких зависимостей, поэтому его не составит труда установить.
npm i -S bcryptjs && npm uninstall -S bcrypt
Мы успешно установили его для наших приложений. У нас были проблемы с некомпиляцией bcrypt на экземплярах AWS для Node v8.x
Потенциально проблема заключается в несовместимости версий JS узла. Как указано в документации. Обязательно используйте один из релизов lts. Например, укажите это в вашем Dockerfile:
# Pull lts from docker registry
FROM node:8.12.0
# ...
Проверьте версию Node, которую вы используете, может быть несоответствие между тем, что ожидается.
У меня была такая же проблема, и ни одно из этих решений не сработало, и я не знаю почему, в прошлом они работали на меня для подобных проблем.
В любом случае, чтобы решить проблему, я просто вручную пересобрал пакет, используя node-pre-gyp
cd node_modules/bcrypt
node-pre-gyp rebuild
И все заработало как положено.
Надеюсь это поможет
Я только что получил эту ошибку при запуске kadence, установленный скрипт "kadence" сначала проверяет наличие nodejs и запускает узел только при отсутствии nodejs. У меня есть последняя версия узла, связанная с моим каталогом ~/bin, но nodejs запускает старую версию, которую я забыл удалить, но до сих пор проблем не возникало.
Таким образом, люди с этой проблемой могут проверить, действительно ли node и nodejs запускают одну и ту же версию узла...
В моем случае я был в моем офисе прокси, который пропускал некоторые пакеты. Когда я вышел из офиса прокси и попытался npm install
все npm install
. Может быть, это помогает кому-то.
Но мне потребовалось несколько часов, чтобы понять, в чем причина.
В моем случае я использовал nodejs
вместо node
. Из-за nodejs
что nodejs
устанавливается менеджером пакетов:
# which node
/home/user/.nvm/versions/node/v11.6.0/bin/node
# which nodejs
/usr/bin/nodejs
У меня была похожая проблема с robotjs. Существовал некоторый устаревший код, который требовал узла v11, но я уже скомпилировал электронный код на v12. Так что я получил в основном ту же ошибку. Ничто здесь не сработало, так как я в основном пытался перестроить электрон и другие мои зависимости в узел v11 из v12.
Вот что я сделал (часть этого основана на ответе chitzui, кредит, где кредит должен):
npm init
чтобы переустановить пакет, затем пропустите данные со старой резервной копией package.jsonnpm i
Надеюсь это поможет.
Никто из них не работал для меня, но это:
npm install
npm start
запустите npm config set python python2.7
и снова запустите npm install
, вечеринка включена.
Оказывается, моя проблема была в пользовательской ошибке: убедитесь, что версия узла, которую вы используете для работы, такая же, которую вы используете при запуске npm install или yarn.
Я использую NVM для версионного узла и выполнял работу пряжи через терминал, но моя среда IDE была настроена на использование более старой версии узла при запуске, и она выдавала ошибку выше. Сопоставление моей версии IDE узла в конфигурации конфигурации с узлом --version устранило проблему.