node.js - Express 无需 app.listen 或服务器即可工作

标签 node.js express

我仔细检查了项目根目录中的 app.js 文件,但找不到 app.listen 或为 npm start 运行的服务器对象。除此之外,一切正常,但我需要服务器对象才能使用 socket.io。我尝试手动设置它,但最终出现错误,指出端口 (3000) 正在使用中。你能指定哪一行或方法包含app.listen吗?这个模板是使用express-generator生成的,我只做了一些修改。

var express = require('express');
var path = require('path');
var favicon = require('serve-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();
var http = require('http');

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

// uncomment after placing your favicon in /public
//app.use(favicon(__dirname + '/public/favicon.ico'));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

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

// catch 404 and forward to error handler
app.use(function (req, res, next) {
    var err = new Error('Not Found');
    err.status = 404;
    next(err);
});

// error handlers

// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
    app.use(function (err, req, res, next) {
        res.status(err.status || 500);
        res.render('error', {
            message: err.message,
            error: err
        });
    });
}

// production error handler
// no stacktraces leaked to user
app.use(function (err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
        message: err.message,
        error: {}
    });
});

module.exports = app;

下面是错误日志

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: listen EADDRINUSE
    at errnoException (net.js:904:11)
    at Server._listen2 (net.js:1042:14)
    at listen (net.js:1064:10)
    at Server.listen (net.js:1138:5)
    at Function.app.listen (/Users/Lee/Desktop/bwall/node_modules/express/lib/application.js:556:24)
    at Object.<anonymous> (/Users/Lee/Desktop/bwall/bin/www:7:18)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)

最佳答案

您的错误表明您已在计算机上使用端口 3000,因此您无法运行此服务器。您应该做的是查找正在运行的其他进程,然后终止它们,然后重试。

例如,如果您使用的是 Mac,您可以打开事件监视器,查找 Node 应用程序,然后终止它们。

这将解决您的问题!

更新:如果您想了解 npm start 脚本在做什么,请查看您的 package.json。

关于node.js - Express 无需 app.listen 或服务器即可工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26985275/

相关文章:

node.js - MEAN 堆栈中的验证......?

javascript - heroku node.js 教程 - 将环境变量发送到其他 js 页面

node.js - MQTT 嵌入 mosca,无需任何代理

node.js - 在 Sequelize 事务中执行 promise 列表时无法捕获/抛出错误?

mysql - 如何在mysql中保存和检索图像?

javascript - Jasmine toThrowError 失败,消息 "Error: Actual is not a function"

node.js - 当使用 Sequelize.js 创建另一条记录时,如何在数据库中自动创建一条新记录?

javascript - 将数组从 pug (jade) 传递到 jquery 脚本

javascript - 如何使用 node.js req.pipe(res) 将视频响应发送到 html 播放器

node.js - 使用express.js 在浏览器中下载 PDF 文件不正确(已损坏)