“端口4200已在使用中。使用'--port'指定其他端口。”

时间:2017-06-10 15:12:06

标签: node.js angular 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};

修改的: 这里的洞代码。我想我不会与db.on('open')

达成共识

当我检查端口时:

https://i.stack.imgur.com/l81lJ.png

我同时使用:使用此选项

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

5 个答案:

答案 0 :(得分:0)

看起来在4200上有一些本地运行的进程。这就是我要做的 -

  1. 在终端上执行ps -ef | grep 4200以检查哪个进程在本地运行
  2. 如果没有用,请杀死该过程。 kill -9 ${Process_Id}这会强制终止这个过程。
  3. 尝试再次运行该应用。

答案 1 :(得分:0)

webpack:已成功编译。 ^ C [1] +杀死:9 ng服务

webpack:已成功编译。 ^ Z [1] +停止服务

如果在Mac中使用Ctrl + Z,则表示'Port 4200已在使用中。使用'--port'指定不同的port.'later。

答案 2 :(得分:0)

这意味着端口正在运行其他进程,因此您有两种解决方案。

1通过不同的端口运行角钢

ng serve --port '{new port}'

2杀死相同的端口并在相同的端口中提供服务

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

答案 3 :(得分:0)

对于Windows,在这种情况下端口可能已在运行,这可能是可能的,请以管理员身份转到cmd并查找正在运行的端口的PID。 例如,我的运行端口是4200。

然后在cmd上运行此命令

netstat -a -n -o

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

taskkill -f /pid 17200

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

答案 4 :(得分:0)