Nodejs Express 文件夹列表中显示的端口号

Port number showing in Nodejs express folder listing

我有一个节点 js express 应用程序,它是 运行 在端口 3000 上。当我 运行 它第一次工作时。然后当我第二次 运行 它时,它说“port is already in use”。我已经检查了所有 运行 端口并通过特定的 3000 端口进行了搜索,但仍然无法在 3000 端口上找到进程 运行。

然后我将端口更改为 3002 并检查,现在是程序 运行。当我关闭并再次 运行 时,它显示“port is already in use”。

我尝试使用端口 3003 时也是如此。

我尝试了以下检查 运行 端口

sudo lsof -i -P -n | grep LISTEN
netstat -an | grep 3000
lsof -i:3000
kill <PID>

后来我注意到,当我列出文件夹时,它显示文件夹“3000”、“3002”、“3003”为 folder/file。我不知道这是什么

下面是我的 www 文件

#!/usr/bin/env node

/**
 * Module dependencies.
 */

var app = require('../app');
var debug = require('debug')('mqtt-node:server');
var http = require('http');

/**
 * Get port from environment and store in Express.
 */

var port = normalizePort(process.env.PORT || '3001');
app.set('port', port);

/**
 * Create HTTP server.
 */

var server = http.createServer(app);

/**
 * Listen on provided port, on all network interfaces.
 */

server.listen(port);
server.on('error', onError);
server.on('listening', onListening);

/**
 * Normalize a port into a number, string, or false.
 */

function normalizePort(val) {
  var port = parseInt(val, 10);

  if (isNaN(port)) {
    // named pipe
    return val;
  }

  if (port >= 0) {
    // port number
    return port;
  }

  return false;
}

/**
 * Event listener for HTTP server "error" event.
 */

function onError(error) {
  if (error.syscall !== 'listen') {
    throw error;
  }

  var bind = typeof port === 'string'
    ? 'Pipe ' + port
    : 'Port ' + port;

  // handle specific listen errors with friendly messages
  switch (error.code) {
    case 'EACCES':
      console.error(bind + ' requires elevated privileges');
      process.exit(1);
      break;
    case 'EADDRINUSE':
      console.error(bind + ' is already in use');
      process.exit(1);
      break;
    default:
      throw error;
  }
}

/**
 * Event listener for HTTP server "listening" event.
 */

function onListening() {
  var addr = server.address();
  var bind = typeof addr === 'string'
    ? 'pipe ' + addr
    : 'port ' + addr.port;
  debug('Listening on ' + bind);
}

谁能帮我解释为什么 运行 端口号显示在文件夹列表中,而且我找不到任何 运行 节点端口,但仍然说该端口已在使用中。

我更改了我的 env 文件,问题已解决。我在我的 .env 中将端口定义为 PORT="3000",然后我更改为 PORT=3000,并且它有效。

我不确定为什么 PORT="3000" 在我的 PC 上工作而不在我的服务器上工作。这就是为什么我没有关注这个因素。