生成的Node JS Express应用程序没有" listen"?

时间:2014-07-23 00:37:56

标签: node.js express sequelize.js

运行express时,生成的app.js如下:(在此帖发布之日)

    var express = require('express');
    var path = require('path');
    var favicon = require('static-favicon');
    var logger = require('morgan');
    var cookieParser = require('cookie-parser');
    var bodyParser = require('body-parser');

    var routes = require('./routes/index');
    var users = require('./routes/users');

    var app = express();

    app.set('views', path.join(__dirname, 'views'));
    app.set('view engine', 'jade');

    app.use(favicon());
    app.use(logger('dev'));
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded());
    app.use(cookieParser());
    app.use(express.static(path.join(__dirname, 'public')));

    app.use('/', routes);
    app.use('/users', users);

    app.use(function(req, res, next) {
        ...
    });

    if (app.get('env') === 'development') {
        ...
    }

    app.use(function(err, req, res, next) {
        ...
    });

    module.exports = app;

为简单起见,我删除了评论。

我的问题很简单:
我在网站,博客和文档中看到了很多nodeJS示例,他们使用以下方法之一:

 require('http').createServer(app).listen(3000);

 app.listen(3000);

如果我执行生成的快速应用程序(npm start),它就会运行。我可以使用浏览器导航到localhost:3000并且正在提供服务。那么...... 使用listen(port)的相关性如何?

我问这个是因为我喜欢完全控制事物 此外,模块的一些示例使用listen,例如。模块Sequelize

文章:"用于Express.JS",
链接:http://sequelizejs.com/articles/express

app.js
------

    db
      .sequelize
      .sync({ force: true })
      .complete(function(err) {
        if (err) {
          throw err[0]
        } else {
          http.createServer(app).listen(app.get('port'), function(){
            console.log('Express server listening on port ' + app.get('port'))
          })
        }
      })

这让我觉得我应该在开始听之前同步 如果我不使用listen,并让它自动收听(如生成的代码那样),我会因为同时同步和收听而遇到麻烦吗?

1 个答案:

答案 0 :(得分:2)

如果你看一下package.json文件,你可能会发现它的running / bin / www或者一些这样的启动脚本。这将导致"缺失"听取陈述。