【问题标题】:The generated NodeJS Express application doesnt have "listen"?生成的 NodeJS Express 应用程序没有“监听”?
【发布时间】:2014-07-23 08:58:37
【问题描述】:

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

为简单起见,我删除了 cmets。

我的问题很简单:
我在网站、博客和文档中看到了很多 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,让它自动监听(就像生成的代码一样),我会因为同步和监听而遇到麻烦吗?

【问题讨论】:

    标签: node.js express sequelize.js


    【解决方案1】:

    如果您查看 package.json 文件,您可能会发现它正在运行 /bin/www 或一些类似的启动脚本。那将有“缺失”的listen语句。

    【讨论】:

    • 啊!就在那里。推荐的用法是什么?生成的代码建议还是我应该在 app.js 中拥有所有内容?有约定吗?
    • 我不确定他们何时或为什么将其拆分为另一个文件,但我和您一样感到困惑。可能有一个很好的理由来测试框架?
    猜你喜欢
    • 2020-01-31
    • 2014-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    • 1970-01-01
    • 2011-07-01
    相关资源
    最近更新 更多