我仔细检查了项目根目录中的 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/