"Port 4200 is already in use. Use '--port' to specify a different port."
"Port 4200 is already in use. Use '--port' to specify a different port."
嘿,我正在使用Express作为后端运行Angular2应用程序。出现了以下问题:
[3] 端口4200已被占用。使用“--port”指定不同的端口。
[3] [nodemon] 应用程序崩溃 - 等待文件更改后再启动...
[1] [HPM] 尝试将来自localhost:4200的请求代理到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; (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')
这一行。
当我检查端口时:
我使用concurrently:使用以下选项
"dev": "concurrently \"mongod\" \"ng serve -pc proxy.conf.json --open\" \"tsc -w -p server\" \"nodemon dist/server/server.js\"",
Port 4200 is already in use. Use '--port' to specify a different port.(端口4200已被使用。使用'--port'指定一个不同的端口。)这个问题出现的原因是端口已经被其他进程占用了,解决方法有两种。
第一种方法是在不同的端口上运行Angular应用。可以通过以下命令来指定一个新的端口:
ng serve --port '{新的端口}'
第二种方法是杀死已经占用了4200端口的进程,然后在同一个端口上重新启动应用。可以通过以下命令来杀死占用了4200端口的进程,并重新启动应用:
sudo kill $(sudo lsof -t -i:4200) ng serve
通过以上两种方法,就可以解决"Port 4200 is already in use. Use '--port' to specify a different port."这个问题。
Port 4200 is already in use. Use '--port' to specify a different port. 这个问题出现的原因是本地有一个进程在使用4200端口。解决方法如下:
- 在终端上执行
ps -ef | grep 4200
命令,查看本地正在运行的进程。 - 如果进程不是有用的,可以使用
kill -9 ${Process_Id}
命令强制结束该进程。 - 然后尝试重新运行应用程序。
这个方法没有起作用。我认为node应用程序想要使用与angular应用程序相同的端口。但是我将其指定为3000而不是4200。
这部分是部分正确的。你可以在node应用程序中这样做:app.set('port', (process.env.PORT || 3000));这意味着如果你在bash配置文件中设置了PORT变量指向4200,它将采用该地址。我建议尝试删除该命令中的process.env.port部分,或者删除OR条件,然后看看node应用程序是否在3000端口上运行。
首先感谢你的帮助,但还是没有解决。我已经在顶部发布了整个server.ts文件。我不认为我能够达到db.on('open')
这一行。
嘿,不要问我是怎么做到的,但是它正在工作...谢谢你的时间和帮助。