“端口4200已被使用,使用'--port'指定不同的端口。”

问题描述:

嘿,我运行一个angular2应用程序与快递作为后端。获得了以下问题:“端口4200已被使用,使用'--port'指定不同的端口。”

[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\"", 
+0

你是在本地运行还是在linux上运行? –

+0

我在本地使用它 –

+0

你的mongo在本地运行的端口是什么? –

貌似有本地运行的一些程序在这里是我会做 -

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

没有工作。我认为节点应用程序想要使用与角度相同的端口。但我指定它屁股3000而不是4200 –

+0

以及这部分是真的。您可以在节点应用程序中执行此操作 - app.set('port',(process.env.PORT || 3000)); 这意味着如果你的bash配置文件中设置PORT变量指向4200它将采用该地址。我会说尝试删除process.env.port或该条命令的条件,看看节点应用程序是否运行在3000 –

+0

首先感谢您的帮助,但仍然没有解决方案。在后面添加了hole server.ts。我不认为我到达'db.on'('open')' –

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

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

如果您在Mac中使用Ctrl + Z,您将有'Port 4200已被使用。使用'--port'指定一个不同的端口。'later。