Ошибка при развертывании приложения метеора с использованием развертывания mup при установке npm bcrypt

У меня ошибка при развертывании приложения метеора с помощью mup deploy, ну, на самом деле, я также получаю эту ошибку, когда пытаюсь вручную собрать образ с Dockerfile, сгенерированным mup.

Я предполагаю, что основное сообщение об ошибке (где-то ниже в выводе журнала):

sh: 1: node-pre-gyp: не найден

Вывод журнала от docker build -t my-app:build .:

Removing intermediate container 3ac4d1150023
Step 7/7 : RUN cd  /built_app/programs/server &&     npm install --unsafe-perm
 ---> Running in 4a6faacefc21

> [email protected] install /built_app/programs/server/node_modules/fibers
> node build.js || nodejs build.js

`linux-x64-v8-4.5` exists; testing
Binary is fine; exiting

> [email protected] install /built_app/programs/server
> node npm-rebuild.js


> [email protected] install /built_app/programs/server/npm/node_modules/meteor/npm-bcrypt/node_modules/bcrypt
> node-gyp rebuild

make: Entering directory '/built_app/programs/server/npm/node_modules/meteor/npm-bcrypt/node_modules/bcrypt/build'
  CXX(target) Release/obj.target/bcrypt_lib/src/blowfish.o
  CXX(target) Release/obj.target/bcrypt_lib/src/bcrypt.o
  CXX(target) Release/obj.target/bcrypt_lib/src/bcrypt_node.o
  SOLINK_MODULE(target) Release/obj.target/bcrypt_lib.node
  COPY Release/bcrypt_lib.node
make: Leaving directory '/built_app/programs/server/npm/node_modules/meteor/npm-bcrypt/node_modules/bcrypt/build'
[email protected] /built_app/programs/server/npm/node_modules/meteor/npm-bcrypt/node_modules/bcrypt
[email protected] /built_app/programs/server/npm/node_modules/meteor/npm-bcrypt/node_modules/bcrypt/node_modules/bindings
[email protected] /built_app/programs/server/npm/node_modules/meteor/npm-bcrypt/node_modules/bcrypt/node_modules/nan

> [email protected] install /built_app/programs/server/npm/node_modules/bcrypt
> node-pre-gyp install --fallback-to-build
sh: 1: node-pre-gyp: not found
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn
npm ERR! [email protected] install: `node-pre-gyp install --fallback-to-build`
npm ERR! spawn ENOENT
npm ERR!
npm ERR! Failed at the [email protected] install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2018-02-07T17_21_17_486Z-debug.log
npm WARN [email protected] No description
npm WARN [email protected] No repository field.
npm WARN [email protected] No license field.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] install: `node npm-rebuild.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2018-02-07T17_21_17_559Z-debug.log
The command '/bin/sh -c cd  /built_app/programs/server &&     npm install --unsafe-perm' returned a non-zero code: 1

И упомянутые файлы журнала говорят:

...
1227 info build /built_app/programs/server/npm/node_modules/bcrypt
1228 info lifecycle [email protected]~preinstall: [email protected]
1229 silly lifecycle [email protected]~preinstall: no script for preinstall, continuing
1230 info linkStuff [email protected]
1231 silly linkStuff [email protected] has /built_app/programs/server/npm/node_modules as its parent node_modules
1232 verbose linkBins [email protected]
1233 verbose linkMans [email protected]
1234 verbose rebuildBundles [email protected]
1235 info lifecycle [email protected]~install: [email protected]
1236 verbose lifecycle [email protected]~install: unsafe-perm in lifecycle true
1237 verbose lifecycle [email protected]~install: PATH: /opt/nodejs/lib/node_modules/npm/bin/node-gyp-bin:/built_app/programs/server/npm/node_modules/bcrypt/node_modules/.bin:/built_app/programs/server/npm/node_modules/.bin:/opt/nodejs/bin:/opt/nodejs/lib/node_modules/npm/bin/node-gyp-bin:/built_app/programs/server/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
1238 verbose lifecycle [email protected]~install: CWD: /built_app/programs/server/npm/node_modules/bcrypt
1239 silly lifecycle [email protected]~install: Args: [ '-c', 'node-pre-gyp install --fallback-to-build' ]
1240 info lifecycle [email protected]~install: Failed to exec install script
1241 verbose stack Error: [email protected] install: `node-pre-gyp install --fallback-to-build`
1241 verbose stack spawn ENOENT
1241 verbose stack     at ChildProcess.<anonymous> (/opt/nodejs/lib/node_modules/npm/lib/utils/spawn.js:33:16)
1241 verbose stack     at emitTwo (events.js:87:13)
1241 verbose stack     at ChildProcess.emit (events.js:172:7)
1241 verbose stack     at maybeClose (internal/child_process.js:862:16)
1241 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:222:5)
1242 verbose pkgid [email protected]
1243 verbose cwd /built_app/programs/server/npm
1244 verbose Linux 4.4.0-83-generic
1245 verbose argv "/opt/nodejs/bin/node" "/opt/nodejs/bin/npm" "rebuild"
1246 verbose node v4.8.7
1247 verbose npm  v4.6.1
1248 error file sh
1249 error code ELIFECYCLE
1250 error errno ENOENT
1251 error syscall spawn
1252 error [email protected] install: `node-pre-gyp install --fallback-to-build`
1252 error spawn ENOENT
1253 error Failed at the [email protected] install script.
1253 error This is probably not a problem with npm. There is likely additional logging output above.
1254 verbose exit [ 1, true ]

версия метеора: 1.4.4.2
версия узла: v4.8.7 версия npm: 4.6.1
версия mup: 1.3.7
образ докера: abernix/meteord:node-4.8.7-base

Есть идеи...?
Какой файл не найден?
(И я почти уверен, что точно такая же конфигурация работала какое-то время назад...)
Я очень ценю любое предложение!


person Peter T.    schedule 07.02.2018    source источник


Ответы (2)


Запуск вашего приложения требует node-pre-gyp из-за пакета bcrypt:

[email protected] установить /built_app/programs/server/npm/node_modules/bcrypt

› node-pre-gyp install --fallback-to-build

Однако, если вы обратите пристальное внимание, чуть выше вы заметите, что другая версия bcrypt также установлена ​​и успешно строится:

[email protected] установить /built_app/programs/server/npm/node_modules/meteor/npm-bcrypt/node_modules/bcrypt

› перестройка node-gyp

Учитывая пути установки, кажется, что 0.8.6, вероятно, происходит из пакета Meteor Atmosphere (npm-bcrypt), в то время как 1.0.3 исходит из package.json зависимостей.

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

В наиболее вероятном случае, когда ваше приложение зависит от bcrypt из-за пакета accounts-password Meteor, последний будет автоматически использовать версию JavaScript bcrypt, если он отсутствует, поэтому ваше приложение не должно ломаться, просто удаляя версию npm: meteor npm uninstall --save bcrypt (как уже упоминалось @AbhishekMaurya). Однако, как отмечено в ответе @AbhishekMaurya, в журнале запуска приложения будет отображаться предупреждающее сообщение, предлагающее npm install bcrypt (которое вы только что отменили). Вы можете смириться с этим предупреждением, если согласитесь с небольшим ухудшением производительности, когда ваше приложение использует реализацию JavaScript bcrypt.

Что касается основной причины, то в Meteor была ошибка, из-за которой node-pre-gyp не отображалось. до npm. Это должно было быть исправлено в версии Meteor 1.4.3.

Если нет, вы можете попытаться убедиться, что используете старую версию bcrypt, как уже упоминалось здесь: meteor npm install --save [email protected]

person ghybs    schedule 08.02.2018
comment
Большое спасибо за ваш подробный ответ! Я очень ценю это, так как это помогает мне понять. Ну, я действительно не заметил, что ранее была установлена ​​​​другая версия bcrypt. Я проверю это подробно. Я помню, что установил bcrypt из-за этого предупреждающего сообщения, и в прошлом он работал. Я все еще пытаюсь выяснить, что изменилось, что сломало его. В любом случае, еще раз спасибо! - person Peter T.; 08.02.2018

Удалите bcrypt, вы увидите предупреждение, но это не повлияет на приложение.

person Abhishek Maurya    schedule 08.02.2018