我正在使用 nodejs 和 express 来构建一个非常简单的服务器,但是每次我更改我的代码时,都会出现该端口已在使用中的错误
i am using nodejs and express to build a very simple server but every time i changes my code error comes that port already is in use
每次我对代码做一些更改然后 运行 出现这个错误我已经更改了很多端口并且不知道它背后的原因。也请解释一下process.env.PORT的含义及其意义,在此先感谢
index.js
/*******installed modules****** */
const express = require('express')
const mongoose = require('mongoose')
const path = require('path')
/*****user created modules******* */
const User = require('./model/user')
const PORT = 8005
const app = express()
/*********middlewares**********/
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
app.use(express.static('static'))
/******view engine*********** */
app.set('views', path.join(__dirname, 'views'));
// Set view engine as EJS
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');
/********connect with mongoDb cloud********/
const mongoUrl = 'mongodb+srv://admin:{my_key}@cluster0.zskv7.mongodb.net/myFirstDatabase?retryWrites=true&w=majority'
mongoose.connect(mongoUrl, { useNewUrlParser: true, useUnifiedTopology: true });
mongoose.connection.on("connected", () => {
console.log("connected to mongoDb");
});
/*********get request to check if server is working properly*********/
app.get('/', (req, res) => {
res.render('index')
})
app.use('/favgame', (req, res) => {
const { name, fav_game } = req.body
User.find({ name: name })
.then((oldUser) => {
if (oldUser) {
return res
.status(422)
.json({ error: "user already exists in the database" });
}
//if user does not exists initially
//create new user with these details
const user = new User(req.body);
user
.save()
.then((user) => {
res.json({ message: "successfully saved" })
console.log('User saved successfully')
})
.catch((err) => {
res.send("Error", err)
console.log('cannot create user some error');
});
})
})
/**********listening on server************ */
app.listen(PORT, (err) => {
if (err) {
return console.log(err);
}
console.log(`Server started on PORT: ${PORT}`);
})
错误来了
node:events:342
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE: address already in use :::8005
at Server.setupListenHandle [as _listen2] (node:net:1306:16)
at listenInCluster (node:net:1354:12)
at Server.listen (node:net:1441:7)
at Function.listen (/home/dhruv/Desktop/quiz_question/node_modules/express/lib/application.js:618:24)
at Object.<anonymous> (/home/dhruv/Desktop/quiz_question/index.js:75:5)
at Module._compile (node:internal/modules/cjs/loader:1109:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1138:10)
at Module.load (node:internal/modules/cjs/loader:989:32)
at Function.Module._load (node:internal/modules/cjs/loader:829:14)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:76:12)
at node:internal/main/run_main_module:17:47
Emitted 'error' event on Server instance at:
at emitErrorNT (node:net:1333:8)
at processTicksAndRejections (node:internal/process/task_queues:83:21) {
code: 'EADDRINUSE',
errno: -98,
syscall: 'listen',
address: '::',
port: 8005
}
我已经检查了之前发布在类似标题上的问题,但没有得到帮助,应用这些更改也没有解决错误,我知道错误是非常基本的,但无法弄清楚
您收到此错误是因为程序本身正在 运行ning(并使用指定的端口)并且您正在尝试再次 运行 它,简单的解决方案是先停止程序然后运行 再次应用更改,更好的解决方案是使用像 nodemon 这样的热重载帮助程序包,你可以安装它:
npm install -g nodemon
并像这样使用它 运行
nodemon index.js
这将停止并重新运行 服务器上的代码更改保存。
关于process.env.PORT,process.env一般是环境变量对象,由OS或任何其他填充环境变量的工具定义,环境变量在KEY:VALUE形式 PORT 只是定义环境变量的键,process.env.PORT 产生 PORT 环境变量的值。
每次我对代码做一些更改然后 运行 出现这个错误我已经更改了很多端口并且不知道它背后的原因。也请解释一下process.env.PORT的含义及其意义,在此先感谢
index.js
/*******installed modules****** */
const express = require('express')
const mongoose = require('mongoose')
const path = require('path')
/*****user created modules******* */
const User = require('./model/user')
const PORT = 8005
const app = express()
/*********middlewares**********/
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
app.use(express.static('static'))
/******view engine*********** */
app.set('views', path.join(__dirname, 'views'));
// Set view engine as EJS
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');
/********connect with mongoDb cloud********/
const mongoUrl = 'mongodb+srv://admin:{my_key}@cluster0.zskv7.mongodb.net/myFirstDatabase?retryWrites=true&w=majority'
mongoose.connect(mongoUrl, { useNewUrlParser: true, useUnifiedTopology: true });
mongoose.connection.on("connected", () => {
console.log("connected to mongoDb");
});
/*********get request to check if server is working properly*********/
app.get('/', (req, res) => {
res.render('index')
})
app.use('/favgame', (req, res) => {
const { name, fav_game } = req.body
User.find({ name: name })
.then((oldUser) => {
if (oldUser) {
return res
.status(422)
.json({ error: "user already exists in the database" });
}
//if user does not exists initially
//create new user with these details
const user = new User(req.body);
user
.save()
.then((user) => {
res.json({ message: "successfully saved" })
console.log('User saved successfully')
})
.catch((err) => {
res.send("Error", err)
console.log('cannot create user some error');
});
})
})
/**********listening on server************ */
app.listen(PORT, (err) => {
if (err) {
return console.log(err);
}
console.log(`Server started on PORT: ${PORT}`);
})
错误来了
node:events:342
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE: address already in use :::8005
at Server.setupListenHandle [as _listen2] (node:net:1306:16)
at listenInCluster (node:net:1354:12)
at Server.listen (node:net:1441:7)
at Function.listen (/home/dhruv/Desktop/quiz_question/node_modules/express/lib/application.js:618:24)
at Object.<anonymous> (/home/dhruv/Desktop/quiz_question/index.js:75:5)
at Module._compile (node:internal/modules/cjs/loader:1109:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1138:10)
at Module.load (node:internal/modules/cjs/loader:989:32)
at Function.Module._load (node:internal/modules/cjs/loader:829:14)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:76:12)
at node:internal/main/run_main_module:17:47
Emitted 'error' event on Server instance at:
at emitErrorNT (node:net:1333:8)
at processTicksAndRejections (node:internal/process/task_queues:83:21) {
code: 'EADDRINUSE',
errno: -98,
syscall: 'listen',
address: '::',
port: 8005
}
我已经检查了之前发布在类似标题上的问题,但没有得到帮助,应用这些更改也没有解决错误,我知道错误是非常基本的,但无法弄清楚
您收到此错误是因为程序本身正在 运行ning(并使用指定的端口)并且您正在尝试再次 运行 它,简单的解决方案是先停止程序然后运行 再次应用更改,更好的解决方案是使用像 nodemon 这样的热重载帮助程序包,你可以安装它:
npm install -g nodemon
并像这样使用它 运行
nodemon index.js
这将停止并重新运行 服务器上的代码更改保存。
关于process.env.PORT,process.env一般是环境变量对象,由OS或任何其他填充环境变量的工具定义,环境变量在KEY:VALUE形式 PORT 只是定义环境变量的键,process.env.PORT 产生 PORT 环境变量的值。