前奏
今天下午准备部署自己写的Meteor 一个web应用,然而这个一部署就折磨我半天的时间
过程
下午一点多提交了最后一个commit准备去服务器写脚本部署了,脚本很快写完,但是部署时遇到一个 很大的问题,就是报:
Error: Module did not self-register.
itodoPro-9 (err): at Error (native)
itodoPro-9 (err): at Module.load (module.js:355:32)
itodoPro-9 (err): at Function.Module._load (module.js:310:12)
itodoPro-9 (err): at Module.require (module.js:365:17)
itodoPro-9 (err): at require (module.js:384:17)
itodoPro-9 (err): at bindings (/home/strucoder/personal/itodoPro/bundle/programs/server/npm/npm-bcrypt/node_modules/bcrypt/node_modules/bindings/bindings.js:74:15)
itodoPro-9 (err): at Object.<anonymous> (/home/strucoder/personal/itodoPro/bundle/programs/server/npm/npm-bcrypt/node_modules/bcrypt/bcrypt.js:3:35)
itodoPro-9 (err): at Module._compile (module.js:460:26)
itodoPro-9 (err): at Object.Module._extensions..js (module.js:478:10)
itodoPro-9 (err): at Module.load (module.js:355:32)
当时有点茫然,遇到自己代码写的错误还有头绪解决,遇到这样的问题,基本没辙了,去google一番,万万没想到啊
我的vpn这个关键点居然重连不上了,经过漫长的等待,终于vpn连上了,这里不得不感慨,我们这些人,没有互联网没有
vpn如何存活下去。
像我这样的问题node上也有相似的issues, 这也是比较蛋疼的,
node 0.12还是这么肯爹。然而iojs是支持的,看到这个,我也是醉了。。。
最终的stackoverflow上找到了和我一样的提问,解决方法是:
rm -R path/to/bcrypt
npm install bcrypt
这里要说明的是这个bcrypt是Meteor账户系统一个核心的package,不能缺少。 但是这里问题虽然解决了,还有一个需要面临的问题,安装bcrypt需要sudo,但是pm2不能用sudo执行, 不然很有可能会报:
events.js:85
throw er; // Unhandled 'error' event
^
Error: connect EACCES
at exports._errnoException (util.js:746:11)
at PipeConnectWrap.afterConnect [as oncomplete] (net.js:1000:19)
如果出现这个,基本你的pm2就没有用了,需要彻底删除重装,当然我在下面的链接也给出了 老外的解决方法,有些繁琐 出现这个问题的原因就是:
For UNIX domain sockets, which are identified by pathname: Write permission is denied on the socket file, or search permission is denied for one of the directories in the path
prefix.
参考来自这里
当然这个老外也给出了解决办法,我没看,觉得没这么繁琐,我直接:
- uninstall pm2
- cd .npm && sudo rm -rf pm2*
- cd ~ && sudo rm -rf .pm2
- sudo npm install pm2 -g
就这样简单粗暴的解决了,我也给这个issues写出了我的答案
所以在这些问题和不稳定的因素下我决定暂时先等着, 当然也有好的解决办法,退回node v0.10* 不过这不是我的风格。 先完善自己的Meteor 应用。
结局
一个字: 先等着 耽误我吃午饭的时间,让我准备今天冲个澡的心情都没了。
最后
本分享允许以*.itodo.me和*.cnodejs.org域名进行分享交流, 转载请注明链接来源。 原文:itodo.me Thanks :)
咳咳。。。。。。为什么我觉得你这里遇到的问题单纯是因为从 0.10 升级到 0.12 之后,node_modules 没有重新安装导致的…
第一个 bcrypt 的问题,我好像遇到过,就是因为 bcrypt 用到了 c++ addon,所以 0.10 的编译的包不能直接在 0.12 使用。 然后我再看 pm2 这个问题的解决方案,也是重装啊。而且 pm2 也用到了 c++ addon。
@alsotang 嗯,问题的本质确实是这样,Meteor自带的是0.10版本的pkg, 所以在0.12上报了错 对于pm2重装解决不了,因为在我这个情况下不是管理员权限,连pm2 list都报错。只能rm 后重装