Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Meteor 0.9 Modulus deployment doesn't work - "Cannot find module 'fibers'"

When trying to deploy a newly created Meteor (0.9) app I always get this error message in the Modulus logs:

module.js:340
throw err;
      ^
Error: Cannot find module 'fibers'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (/mnt/data/2/programs/server/boot.js:1:75)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)

what I did was:

  • installing meteor with these steps
  • executing these steps for modulus setup

but even after trying the solution of the question "Can't install, update or run Meteor after update" I can't get it running.

anyone a guess what's wrong here?

like image 628
Matthias Posch Avatar asked Aug 30 '14 10:08

Matthias Posch


2 Answers

After building your bundle, run the following:

cd <bundle dir>/programs/server
sudo npm install

That will install fibers into the bundle and that fixed it for me. Hope this works for you!

like image 92
Manto Avatar answered Oct 05 '22 06:10

Manto


This may have something to do with the new architecture of the meteor bundle (the process which converts a Meteor app to a regular Node.js app).

In Meteor < 0.9 you had to run npm install at the root of the bundle to get npm modules installed, now you have to cd in programs/server first, as stated in the README :

This is a Meteor application bundle. It has only one external dependency:
Node.js 0.10.29 or newer. To run the application:

  $ (cd programs/server && npm install)
  $ export MONGO_URL='mongodb://user:password@host:port/databasename'
  $ export ROOT_URL='http://example.com'
  $ export MAIL_URL='smtp://user:password@mailhost:port/'
  $ node main.js

Use the PORT environment variable to set the port where the
application will listen. The default is 80, but that will require
root on most systems.

Find out more about Meteor at meteor.com.

Modulus developed a tool called demeteorizer which is supposed to automate this process of converting a Meteor app to a Node.js app, and it's possible that they have not yet modified the tool to account for 0.9 changes.

like image 44
saimeunt Avatar answered Oct 05 '22 08:10

saimeunt