将 socket.io 添加到 express 应用程序时获取 'port already in use error' - 在我尝试的任何端口上都会发生
Getting 'port already in use error' when adding socket.io to express app - happens on any port I try
如标题所述,我在尝试将 socket.io 添加到现有的 Express 应用程序时得到 'address already in use error'。
它发生在每个端口上所以我唯一能想到的就是它试图设置端口 8000 两次。但是,我不知道在哪里。
这是控制台中的错误。
这是我的 config.js
module.exports = {
PORT: process.env.PORT || 8000,
NODE_ENV: process.env.NODE_ENV || 'development',
DATABASE_URL: process.env.DATABASE_URL || 'postgresql://postgres@localhost/quik'
}
.env
NODE_ENV=development
PORT=8000
这是我的主要快递应用程序。我试过从 process.env 设置端口并直接使用 '8000'。
require('dotenv').config()
const morgan = require('morgan')
const cors = require('cors')
const helmet = require('helmet')
const { NODE_ENV } = require('./config')
const userRouter = require('./user/user_router')
const pinsRouter = require('./pins/pins_router')
const chatRouter = require('./chat/chat_router')
const config = require('./config')
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
io.on('connection', function(socket){
socket.on('chat message', function(msg){
io.emit('chat message', msg);
});
});
http.listen(config.PORT, function(){
console.log('listening on *:8000');
});
const morganOption = (NODE_ENV === 'production')
? 'tiny'
: 'common';
app.use(morgan(morganOption))
app.use(helmet())
app.use(cors())
app.use('/user_route', userRouter)
app.use('/pins_route', pinsRouter)
app.use('/chat_route', chatRouter)
app.get('/', (req, res) => {
res.send('Hello, world!')
})
app.use(function errorHandler(error, req, res, next) {
let response
if (NODE_ENV === 'production') {
response = { error: { message: 'server error' } }
} else {
console.error(error)
response = { message: error.message, error }
}
res.status(500).json(response)
})
module.exports = app
错误中的堆栈跟踪显示您正在某处调用 app.listen()
(可能来自您的 server.js
- 第 13 行)。您需要找到该代码并将其删除。您只想尝试启动同一个服务器一次,而您的 http.listen()
已经启动了一次。
如标题所述,我在尝试将 socket.io 添加到现有的 Express 应用程序时得到 'address already in use error'。
它发生在每个端口上所以我唯一能想到的就是它试图设置端口 8000 两次。但是,我不知道在哪里。
这是控制台中的错误。
这是我的 config.js
module.exports = {
PORT: process.env.PORT || 8000,
NODE_ENV: process.env.NODE_ENV || 'development',
DATABASE_URL: process.env.DATABASE_URL || 'postgresql://postgres@localhost/quik'
}
.env
NODE_ENV=development
PORT=8000
这是我的主要快递应用程序。我试过从 process.env 设置端口并直接使用 '8000'。
require('dotenv').config()
const morgan = require('morgan')
const cors = require('cors')
const helmet = require('helmet')
const { NODE_ENV } = require('./config')
const userRouter = require('./user/user_router')
const pinsRouter = require('./pins/pins_router')
const chatRouter = require('./chat/chat_router')
const config = require('./config')
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
io.on('connection', function(socket){
socket.on('chat message', function(msg){
io.emit('chat message', msg);
});
});
http.listen(config.PORT, function(){
console.log('listening on *:8000');
});
const morganOption = (NODE_ENV === 'production')
? 'tiny'
: 'common';
app.use(morgan(morganOption))
app.use(helmet())
app.use(cors())
app.use('/user_route', userRouter)
app.use('/pins_route', pinsRouter)
app.use('/chat_route', chatRouter)
app.get('/', (req, res) => {
res.send('Hello, world!')
})
app.use(function errorHandler(error, req, res, next) {
let response
if (NODE_ENV === 'production') {
response = { error: { message: 'server error' } }
} else {
console.error(error)
response = { message: error.message, error }
}
res.status(500).json(response)
})
module.exports = app
错误中的堆栈跟踪显示您正在某处调用 app.listen()
(可能来自您的 server.js
- 第 13 行)。您需要找到该代码并将其删除。您只想尝试启动同一个服务器一次,而您的 http.listen()
已经启动了一次。