Meteor bundle因为fiber.node缺失而失败

时间:2012-11-10 23:24:45

标签: meteor

捆绑的node.fibers在部署到其他服务器后无法加载,但出现以下错误:

/home/ec2-user/bundle/server/node_modules/fibers/fibers.js:13
    throw new Error('`'+ modPath+ '.node` is missing. Try reinstalling `node-fibe
          ^
Error: `/home/ec2-user/bundle/server/node_modules/fibers/bin/linux-x64-v8-3.11/fibers.node` is missing. Try reinstalling `node-fibers`?
    at Object.<anonymous> (/home/ec2-user/bundle/server/node_modules/fibers/fibers.js:13:8)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:362:17)
    at require (module.js:378:17)
    at Object.<anonymous> (/home/ec2-user/bundle/server/server.js:3:1)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)

3 个答案:

答案 0 :(得分:45)

解压缩捆绑包后,必须重新安装节点光纤。要解决此问题,请转到服务器目录。

$ cd bundle/server

然后取消安装fibers

$ npm uninstall fibers

然后安装fibers

$ npm install fibers

然后启动您的应用程序

$ cd ../../
$ PORT=3000 MONGO_URL=mongodb://localhost:27017/myapp node bundle/main.js

每次更新应用时都必须重复此操作。这就是Meteor目前使用Node的方式。可以在此处找到潜在的长期修复:http://meteorhacks.com/how-meteor-uses-node.html

注意:在Meteor 0.6.5和节点0.10。*上,这可能会略有不同。您可能需要从bundle/server以及bundle/programs/server手动删除光纤。您可以使用$ rm -R node_modules/fibers执行此操作。然后,您必须使用$ npm install fibers从这两个位置重新安装光纤。

答案 1 :(得分:2)

我对Meteor 1.0.3.2和Node 0.12.0也有同样的问题。 我不得不降级到节点0.10.31。 这解决了这个问题。

请记住所有说明都在捆绑文件夹的自述文件中。

答案 2 :(得分:0)

不匹配的节点版本

节点的版本必须在您执行npm install和运行meteor应用程序时匹配:node app.js

否则,您可能会得到不同版本的预期 glibc 文件夹...

查看您是否遇到此问题:

  1. 注意您看到的运行时错误。例如,就我而言:
Try running this to fix the issue: /usr/bin/node <bundle location>/bundle/programs/server/node_modules/fibers/build
Cannot find module '<bundle location>/bundle/programs/server/node_modules/fibers/bin/linux-x64-83-libc/fibers`
  • 即使我通过 /usr/bin/node 管理我的节点版本,修复说明也提到了 nvm
  • 可执行文件正在 fibers 文件夹中查找 linux-x64-83-libc
  1. 导航到 bundle/programs/server/node_modules/fibers/bin 并检查您的 glibc 子文件夹。就我而言:linux-x64-57-glibc & linux-x64-64-glibc
  • 我的可执行文件正在寻找 linux-x64-83-libc 并且它不存在。

注意事项

就我而言,我使用 nvm 来管理我的节点版本。但正如我在 fix 说明中看到的那样,我的可执行文件使用的是 /usr/bin/node 而不是我期望的 nvm 版本。

修复

我通过 /usr/bin/node 删除了 sudo apt-get uninstall nodejs 版本,一切都很好。一切都开始使用 nvm 版本。