【问题标题】:What is causing this error in my terminal?是什么导致我的终端出现此错误?
【发布时间】:2019-01-23 12:34:43
【问题描述】:

这是我的错误,我尝试使用另一个端口号,但同样的错误不断出现。然而,页面工作正常,虽然终端一直显示以下错误:

events.js:167
  throw er; // Unhandled 'error' event
  ^

Error: listen EADDRINUSE: address already in use :::3000
    at Server.setupListenHandle [as _listen2] (net.js:1290:14)
    at listenInCluster (net.js:1338:12)
    at Server.listen (net.js:1425:7)
    at Object.<anonymous> (/Users/jade/Desktop/node.js-mysql-1/main.js:160:5)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)
Emitted 'error' event at:
    at emitErrorNT (net.js:1317:8)
    at process._tickCallback (internal/process/next_tick.js:63:19)
    at Function.Module.runMain (internal/modules/cjs/loader.js:745:11)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:743:3)

这是我在终端上加载的 nodejs 代码:

var http = require('http');
var fs = require('fs');
var url = require('url');
var qs = require('querystring');
var template = require('./lib/template.js');
var path = require('path');
var sanitizeHtml = require('sanitize-html');
var mysql = require('mysql');
var db = mysql.createConnection({
  host:'localhost',
  user:'nodejs',
  password:'111111',
  database:'opentutorials'
});
db.connect();

var app = http.createServer(function(request,response){
    var _url = request.url;
    var queryData = url.parse(_url, true).query;
    var pathname = url.parse(_url, true).pathname;
    if(pathname === '/'){
      if(queryData.id === undefined){
        db.query(`SELECT * FROM topic`, function(error,topics){
          var title = 'Welcome';
          var description = 'Hello, Node.js';
          var list = template.list(topics);
          var html = template.HTML(title, list,
            `<h2>${title}</h2>${description}`,
            `<a href="/create">create</a>`
          );
          response.writeHead(200);
          response.end(html);
        });
ellipsis...

app.listen(3000);

这个错误的原因是什么?

【问题讨论】:

  • 尝试 app.listen(5000) 第一行错误说端口 3000 已在使用中
  • 您已经在端口 3000 上运行了一个服务器,这就是页面运行正常的原因。您需要终止正在运行的服务器。
  • port 5000 也会导致同样的错误,无论号码是相同的错误都会出现。我怎样才能杀死正在运行的服务器?

标签: javascript mysql node.js


【解决方案1】:

打开 CMD 并执行以下操作

  1. 通过在 CMD "netstat -ano | findstr :3000" 中运行命令获取进程 PID

  2. 并杀死该进程“taskkill /PID 8664 /F”

在我的例子中 pid 是 8664

【讨论】:

  • 我是 mac 用户,所以我尝试了 netstat -vanp tcp | grep 3000 然后 sudo lsof -i tcp:3000 但它不起作用。我不知道 pid 是什么 :( 你能解释一下 pid 是什么吗?
  • 它是在该端口上运行的进程 ID
  • 查找:“sudo lsof -i :3000”并杀死“kill -9 ”在这里检查stackoverflow.com/questions/3855127/…
【解决方案2】:

获取正在运行的进程并杀死它。

sudo lsof -i :3000
kill $PID

【讨论】:

    猜你喜欢
    • 2018-01-20
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 2021-10-28
    • 2015-02-16
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    相关资源
    最近更新 更多