使用“议程”时,Nodemon在启动时崩溃,没有任何痕迹

时间:2015-11-19 17:47:49

标签: javascript node.js nodemon

  

解决:

以下答案的变化需要发生才能得到解决,尽管如果使用nodemon / grunt-nodemon,其中1.2.x由于某种原因使控制器输出静音,因此如果使用控制台测试它将无法工作。 1.3.x具有修复,更新和解决任何依赖性问题。我最终将下面的固定代码移到我的app = express()行下面。并将任何议程ui行与我的app.use()中间件的其余部分放在一起。

另外,如果使用议程-ui,在尝试命中/ agenda-ui端点时会引入一些“无法读取未定义的属性”的分解。不知道为什么还有一个开放的错误报告。

  

原始邮寄

我知道我在这里是个问题。我已经构建了一个应用程序,并希望将“议程”用于后端作业调度。应用程序工作正常,没有在server.js中的议程行。它直接在github页面上说明没有推荐的布局,所以试着通过chuckin'它在我的server.js中测试基本功能起初看起来是可行的。

Nodemon启动并立即崩溃,但没有任何跟踪或信息。启动:

  

[nodemon] v1.2.1 [nodemon]随时重启,输入rs   [nodemon]正在观看:app / views / / gruntfile.js server.js   config / / * .js app / ** / * .js
  [nodemon]从node --debug server.js开始   [nodemon]应用程序崩溃 - 在开始之前等待文件更改...

我把议程代码放在最后我会说在经过一些基本的测试之后,应用程序不会崩溃,直到这2行被取消注释。我想也许这与我的连接字符串有关,因为这是我已经连接到主应用程序的数据库的名称。但是我又一次没收信息了。

agenda.schedule('in 10 seconds', 'greet the world', {time: new Date()});
agenda.start();
    'use strict';
/**
 * Module dependencies.
 */
var init = require('./config/init')(),
    config = require('./config/config'),
    mongoose = require('mongoose'),
    chalk = require('chalk'),
    Agenda = require('agenda');


/**
 * Main application entry file.
 * Please note that the order of loading is important.
 */

// Bootstrap db connection
var db = mongoose.connect(config.db, function(err) {
    if (err) {
        console.error(chalk.red('Could not connect to MongoDB!'));
        console.log(chalk.red(err));
    }
});

// Init the express application
var app = require('./config/express')(db);

// Bootstrap passport config
require('./config/passport')();

// Start the app by listening on <port>
app.listen(config.port);

// Expose app
exports = module.exports = app;

// Logging initialization
console.log('Application started on port ' + config.port);


/////--------TESTING----------------
var agenda = new Agenda({
    db: {
        address: 'mongodb://localhost/consultations',
        collection: 'emailQueue'
        //options: {
        //    ssl: true
        //}
    }
});

agenda.define('greet the world', function(job, done) {
    console.log(job.attrs.data.time, 'hello world!');
    done();
});

agenda.schedule('in 10 seconds', 'greet the world', {time: new Date()});
agenda.start();

console.log('Wait 10 seconds...');
//////------------------------

1 个答案:

答案 0 :(得分:1)

试试这个

agenda.on('ready', function() {
    agenda.define('greet the world', function(job, done) {
        console.log(job.attrs.data.time, 'hello world!');
        done();
    });

    agenda.schedule('in 10 seconds', 'greet the world', {
        time: new Date()
    });
    agenda.start();
});

我也有像

这样的数据库
var agenda = new Agenda({
    db: {
        address: 'localhost:27017/test' //default collection agendaJobs
    } 
});

希望它有所帮助