[英]Error when deploying a meteor app using mup deploy while npm install bcrypt
使用mup deploy
部署流星應用程序時出現錯誤,實際上,當我手動嘗試使用mup生成的Dockerfile構建映像時,也會出現此錯誤。
我猜主要的錯誤信息(在日志輸出中的以下位置)是:
sh:1:節點預石膏:找不到
來自docker build -t my-app:build .
日志輸出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
> fibers@1.0.13 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
> meteor-dev-bundle@0.0.0 install /built_app/programs/server
> node npm-rebuild.js
> bcrypt@0.8.6 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'
bcrypt@0.8.6 /built_app/programs/server/npm/node_modules/meteor/npm-bcrypt/node_modules/bcrypt
bindings@1.2.1 /built_app/programs/server/npm/node_modules/meteor/npm-bcrypt/node_modules/bcrypt/node_modules/bindings
nan@2.2.1 /built_app/programs/server/npm/node_modules/meteor/npm-bcrypt/node_modules/bcrypt/node_modules/nan
> bcrypt@1.0.3 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! bcrypt@1.0.3 install: `node-pre-gyp install --fallback-to-build`
npm ERR! spawn ENOENT
npm ERR!
npm ERR! Failed at the bcrypt@1.0.3 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 meteor-dev-bundle@0.0.0 No description
npm WARN meteor-dev-bundle@0.0.0 No repository field.
npm WARN meteor-dev-bundle@0.0.0 No license field.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! meteor-dev-bundle@0.0.0 install: `node npm-rebuild.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the meteor-dev-bundle@0.0.0 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 bcrypt@1.0.3~preinstall: bcrypt@1.0.3
1229 silly lifecycle bcrypt@1.0.3~preinstall: no script for preinstall, continuing
1230 info linkStuff bcrypt@1.0.3
1231 silly linkStuff bcrypt@1.0.3 has /built_app/programs/server/npm/node_modules as its parent node_modules
1232 verbose linkBins bcrypt@1.0.3
1233 verbose linkMans bcrypt@1.0.3
1234 verbose rebuildBundles bcrypt@1.0.3
1235 info lifecycle bcrypt@1.0.3~install: bcrypt@1.0.3
1236 verbose lifecycle bcrypt@1.0.3~install: unsafe-perm in lifecycle true
1237 verbose lifecycle bcrypt@1.0.3~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 bcrypt@1.0.3~install: CWD: /built_app/programs/server/npm/node_modules/bcrypt
1239 silly lifecycle bcrypt@1.0.3~install: Args: [ '-c', 'node-pre-gyp install --fallback-to-build' ]
1240 info lifecycle bcrypt@1.0.3~install: Failed to exec install script
1241 verbose stack Error: bcrypt@1.0.3 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 bcrypt@1.0.3
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 bcrypt@1.0.3 install: `node-pre-gyp install --fallback-to-build`
1252 error spawn ENOENT
1253 error Failed at the bcrypt@1.0.3 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
模板版本:1.3.7
泊塢窗映像:abernix / meteord:node-4.8.7-base
任何想法 ...?
找不到哪個文件?
(而且,我很確定前段時間完全相同的配置正在工作……)
我真的很感謝任何建議!
由於bcrypt
程序包,您的應用程序開始需要node-pre-gyp
:
> bcrypt@1.0.3安裝/ built_app / programs / server / npm / node_modules / bcrypt
> node-pre-gyp install --fallback-to-build
但是,如果您密切注意,您會注意到上面還安裝了另一個版本的bcrypt
並成功構建了該版本:
> bcrypt@0.8.6安裝/ 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
版本。
在最有可能的情況下,由於Meteor的accounts-password
軟件包,您的應用程序依賴bcrypt
,后者會使用JavaScript版本的bcrypt
如果缺少)自動運行,因此,您的應用程序不應僅通過刪除npm版本來中斷: meteor npm uninstall --save bcrypt
(如@AbhishekMaurya所述)。 但是,正如@AbhishekMaurya的回答所指出的那樣,應用程序啟動日志將顯示一條警告消息,建議npm install bcrypt
(您剛剛撤消了該操作)。 如果您的應用程序使用bcrypt
的JavaScript實現時性能略有下降,則可以接受該警告。
至於現在的根本原因, Meteor中存在一個錯誤,該錯誤阻止了node-pre-gyp
對npm
可見。 這應該已經在Meteor版本1.4.3
修復。
如果沒有,你可以嘗試確保您使用的“舊”版本bcrypt
,提到這里 : meteor npm install --save bcrypt@0.8.7
卸載bcrypt,您將看到警告,但對應用程序沒有重大影響。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.