嘿,我正在运行一个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')
当我检查端口时:
我同时使用:使用此选项
"dev": "concurrently \"mongod\" \"ng serve -pc proxy.conf.json --open\" \"tsc -w -p server\" \"nodemon dist/server/server.js\"",
答案 0 :(得分:0)
看起来在4200上有一些本地运行的进程。这就是我要做的 -
ps -ef | grep 4200
以检查哪个进程在本地运行kill -9 ${Process_Id}
这会强制终止这个过程。答案 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)
使用npx kill-port 4200
然后使用ng serve
参考:“Port 4200 is already in use”. Killing all the processes associated with 4200 did not work.