justanotherprogrammer
justanotherprogrammer

Reputation: 61

Node Forever Error

I'm trying to use node-forever but I get an error when I try to start it.

I called this file start.js

var forever = require('forever-monitor');

  var child = new (forever.Monitor)('app-index.js', {
    'silent': false,
    'watch': true,
    'logFile': '/srv/http/mywebsite.com/logs/forever.log', // Path to log output from forever process (when daemonized)
    'outFile': '/srv/http/mywebsite.com/logs/node-stdout.log', // Path to log output from child stdout
    'errFile': '/srv/http/mywebsite.com/logs/node-stderr.log'  // Path to log output from child stderr
  });

  child.on('exit', function () {
    console.log('admin/app-index.js has exited');
  });

  child.start();

and here is what happens when I run node start.js

path.js:360
        throw new TypeError('Arguments to path.join must be strings');
              ^
TypeError: Arguments to path.join must be strings
    at path.js:360:15
    at Array.filter (native)
    at Object.exports.join (path.js:358:36)
    at exports.attach (/srv/http/mywebsite.com/public/admin/node_modules/forever-monitor/lib/forever-monitor/plugins/watch.js:45:20)
    at Object.bootstrap (/srv/http/mywebsite.com/public/admin/node_modules/forever-monitor/lib/forever-monitor/monitor.js:35:28)
    at exports.App (/srv/http/mywebsite.com/public/admin/node_modules/forever-monitor/node_modules/broadway/lib/broadway/app.js:47:21)
    at new exports.Monitor (/srv/http/mywebsite.com/public/admin/node_modules/forever-monitor/lib/forever-monitor/monitor.js:118:16)
    at Object.<anonymous> (/srv/http/mywebsite.com/public/admin/start.js:3:15)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)

Any Help?

Upvotes: 2

Views: 844

Answers (1)

nullability
nullability

Reputation: 10677

The problem is that you have watch: true set but did not set watchDirectory.

By default watchDirectory is null, but it must be a string path. This seems to be poorly documented.

In your case, the following should solve your problem:

var child = new (forever.Monitor)('app-index.js', {
    'silent': false,
    'watch': true,
    'watchDirectory': '/srv/http/mywebsite.com/public/',
    // ... etc.
});

Upvotes: 2

Related Questions