NodeJS “端口4200已在使用中,请使用'--port'指定一个不同的端口,”

30byixjq  于 2023-01-08  发布在  Node.js
关注(0)|答案(5)|浏览(304)

嘿,我正在运行一个以express作为后端的angular2应用程序。遇到以下问题:

[3] Port 4200 is already in use. Use '--port' to specify a different port.
[3] [nodemon] app crashed - waiting for file changes before starting...
[1] [HPM] Error occurred while trying to proxy request /api/jobs from localhost:4200 to http://localhost:3000 (ECONNREFUSED) (https://nodejs.org/api/errors.html#errors_common_system_errors)

server.js:

import * as bodyParser from 'body-parser';
import * as dotenv from 'dotenv';
import * as express from 'express';
import * as morgan from 'morgan';
import * as mongoose from 'mongoose';
import * as path from 'path';

import setRoutes from './routes';

const app = express();
dotenv.load({path: '.env'});
app.set('port', (process.env.PORT || 3000));

app.use('/', express.static(path.join(__dirname, '../')));

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));

app.use(morgan('dev'));

mongoose.connect(process.env.MONGODB_URI);
const db = mongoose.connection;
(<any>mongoose).Promise = global.Promise;

db.on('error', console.error.bind(console, 'connection error:'));
db.on('open', () => {
  console.log('Connected to MongoDB');
  setRoutes(app);

  app.get('/*', function (req, res) {
    res.sendFile(path.join(__dirname, '../index.html'));
  });

  app.listen(app.get('port'), () => {
    console.log('Angular 2 Full Stack listening on port ' + 
  app.get('port'));
  });
});

export {app};
  • edit*:这里是孔代码。我想我没有达到db.on('open')的行

当我检查端口时:

我同时使用:使用此选项

"dev": "concurrently \"mongod\" \"ng serve -pc proxy.conf.json --open\" \"tsc -w -p server\" \"nodemon dist/server/server.js\"",
htrmnn0y

htrmnn0y1#

看起来4200上本地正在运行某个进程。下面是我将执行的操作-
1.在您的终端上执行ps -ef | grep 4200以检查哪个进程正在本地运行
1.如果没有用,则终止该进程。kill -9 ${Process_Id}这将强制终止该进程。
1.请尝试再次运行该应用。

j5fpnvbx

j5fpnvbx2#

Webpack:已成功编译。^C [1]+已终止:9 ng服务
webpack:编译成功。^Z [1]+已停止ng服务
如果在Mac中使用Ctrl+Z,则会显示端口4200已在使用中。请使用“--port”指定其他端口。稍后。

2j4z5cfb

2j4z5cfb3#

这意味着端口正在运行其他进程,因此您有两个解决方案。
1通过以下方式运行不同端口的Angular

ng serve --port '{new port}'

2杀死同一端口并在同一端口服务

sudo kill $(sudo lsof -t -i:4200)
ng serve
q7solyqu

q7solyqu4#

对于Windows,端口可能已经在运行,在这种情况下,以管理员身份进入cmd并查找正在运行的端口的PID。例如,我的运行端口是4200。
然后在cmd上运行此命令

netstat -a -n -o

在列表中查找端口号为4200的端口,或者右键单击终端,然后单击查找此处,在“查找内容”中输入4200,然后单击“查找下一步”:例如,您发现端口号4200由pid 17200使用,然后在cmd中键入以下命令:

taskkill -f /pid 17200

然后您可以根据需要链接端口或启动serve命令

相关问题