meteor运行服务器获取错误:“找不到绑定文件。 bcrypt ”
问题
我尝试在Docker镜像中运行Meteor服务器应用程序。 运行主文件启动服务器会导致错误,请参阅下面的详细信息: Could not locate the bindings file.
(我的系统:Macbook Pro,OSX 10.11.4)
题
有没有人有一个想法如何解决这个错误?
不成功的尝试来解决问题
- 按照这里所build议的运行
npm rebuild
不起作用 - Nick Bull的build议:运行
npm install --unsafe-perm node-gyp
npm install --unsafe-perm libxmljs
和npm install --unsafe-perm libxmljs
不起作用。 两者都在/home/build/bundle/programs/server
的docker容器中执行。 (由于--unsafe-perm
root权限, 需要使用--unsafe-perm
标志)
细节
-
Dockerfile
(灵感来自meteorhacks / meteord )
FROM debian:wheezy ENV sourcedir /home/source ENV builddir /home/build RUN mkdir ${sourcedir} && mkdir ${builddir} RUN apt-get update -y RUN apt-get install -y curl bzip2 build-essential python git RUN \ NODE_VERSION=4.4.7 \ && NODE_ARCH=x64 \ && NODE_DIST=node-v${NODE_VERSION}-linux-${NODE_ARCH} \ && cd /tmp \ && curl -O -L http://nodejs.org/dist/v${NODE_VERSION}/${NODE_DIST}.tar.gz \ && tar xvzf ${NODE_DIST}.tar.gz \ && rm -rf /opt/nodejs \ && mv ${NODE_DIST} /opt/nodejs \ && ln -sf /opt/nodejs/bin/node /usr/bin/node \ && ln -sf /opt/nodejs/bin/npm /usr/bin/npm RUN curl -sL https://install.meteor.com | sed s/--progress-bar/-sL/g | /bin/sh ADD . ${sourcedir} RUN cd ${sourcedir} \ && meteor build --directory ${builddir} --server=http://localhost:3000 RUN cd ${builddir}/bundle/programs/server/ && npm install
- 错误消息,在
bundle
文件夹中运行node main.js
时:
/home/build/bundle/programs/server/node_modules/fibers/future.js:280 throw(ex); ^ Error: Could not locate the bindings file. Tried: → /home/build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt/node_modules/bcrypt/build/bcrypt_lib.node → /home/build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt/node_modules/bcrypt/build/Debug/bcrypt_lib.node → /home/build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt/node_modules/bcrypt/build/Release/bcrypt_lib.node → /home/build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt/node_modules/bcrypt/out/Debug/bcrypt_lib.node → /home/build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt/node_modules/bcrypt/Debug/bcrypt_lib.node → /home/build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt/node_modules/bcrypt/out/Release/bcrypt_lib.node → /home/build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt/node_modules/bcrypt/Release/bcrypt_lib.node → /home/build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt/node_modules/bcrypt/build/default/bcrypt_lib.node → /home/build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt/node_modules/bcrypt/compiled/4.4.7/linux/x64/bcrypt_lib.node at bindings (/home/build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt/node_modules/bindings/bindings.js:88:9) at Object.<anonymous> (/home/build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt/node_modules/bcrypt/bcrypt.js:3:35) at Module._compile (module.js:409:26) at Object.Module._extensions..js (module.js:416:10) at Module.load (module.js:343:32) at Module.Mp.load (/home/build/bundle/programs/server/npm/node_modules/meteor/babel-compiler/node_modules/reify/node/runtime.js:16:23) at Function.Module._load (module.js:300:12) at Module.require (module.js:353:17) at require (internal/module.js:12:17) at Object.Npm.require (/home/build/bundle/programs/server/boot.js:190:18)
根据许多在线 资源 ,这是node-gyp中的一个错误。 尝试这个:
npm install node-gyp npm install libxmljs
看看会发生什么
好的,我发现这个bug:问题是在buildir
中Dockerfile
buildir
的Dockerfile
: ENV builddir /home/build
bcrypt
的构build过程似乎使用相同的variables,并且构build文件bcrypt_lib.node
和obj.target
in那个目录。 所以他们错过了正确的地方。