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



运行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);

如果我执行我生成的express app (npm start),它会运行。我可以用浏览器导航到localhost:3000,它正在被服务。所以…使用listen(port)的相关性如何?

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

Article: " using 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,并让它自动侦听(作为生成的代码),我会得到麻烦,因为同步和侦听在同一时间?

如果你看这个包。Json文件,你可能会发现它运行/bin/www或一些这样的启动脚本。这将有"missing" listen语句

相关内容

最新更新