我正在使用linux mint 19.02
。编写了一个简单的服务器。
const http = require('http');
const express = require('express');
const dotenv = require('dotenv').config();
const app = express();
const server = http.createServer(app);
const port = process.env.PORT // 8081;
app.get('/', (req, res) => {
res.send('Hello world!!!');
});
这是我的package.json文件。
{
"name": "matel",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "node src/index.js",
"dev": "nodemon src/index.js"
},
...
"license": "ISC",
"dependencies": {
"dotenv": "^8.2.0",
"express": "^4.17.1",
"nodemon": "^1.19.4"
}
}
当我使用npm run dev命令启动服务器时,出现错误。通过单击浏览器中的链接
http://localhost:8081/
,我也得到一个错误(逻辑)。events.js:187 throw er; //未处理的“错误”事件^
错误:监听EADDRINUSE:Server.listen(net.js :)在Server.setupListenHandle处已使用的地址::: 8081 [在_listen2](net.js:1300:14)在listenInCluster(net.js:1348:12) 1436:7)。 (/home/user/projects/matel/src/index.js:13:8)在Object.Module._extensions..js(内部)在Module._compile(内部/modules/cjs/loader.js:956:30) /modules/cjs/loader.js:973:10)在Module.load(internal / modules / cjs / loader.js:812:32)在Function.Module._load(internal / modules / cjs / loader.js:724) :14)在Function.Module.runMain(internal / modules / cjs / loader.js:1025:10)在internal / main / run_main_module.js:17:11在Server实例上在'emitErrorNT(net .js:1327:8)位于processTicksAndRejections(内部/进程/task_queues.js:80:21){代码:'EADDRINUSE',errno:'EADDRINUSE',syscall:'listen',address:'::',port: 8081}
但是,当我单击保存
ctrl + s
密钥文件时,一切正常。通过单击浏览器中的链接http://localhost:8081
/,我得到Hello world!!!
,再次按组合键ctrl + s
时,我再次收到错误消息。如此每隔第二次。我运行了
fuser -k 8081/tcp
命令,此后服务器无错误启动,但是当我保存文件时,出现错误,下次保存服务器时它将开始工作。如此每隔第二次。服务器可能会以这种方式运行是什么原因?我怎么了
最佳答案
因此,基于错误消息(及其发生的频率),我认为这里的问题是该端口可以由其他应用程序使用。端口8080和8081可能是常用的端口,而诸如Skype之类的应用程序的goto端口也是如此。因此,当它正常工作时,您可能会劫持该端口。因此,这就像是不同应用程序和该端口之间的整体功耗之争。
因此,我建议尝试使用其他端口,看看是否能解决问题?