node.js - Heroku 部署:端口 **** 上已经有东西在运行
问题描述
我试图在 Heroku 上部署我的应用程序(ReactJs-NodeJs-Mongo)。
但是当我尝试启动它时遇到问题,我收到一条错误消息“端口 **** 上已经有东西运行”。
我的背在跑,但不是我的前面。
这是我第一次尝试在 Heroku 上部署。所以我错过了一些关于它的东西。
我该如何解决这个问题?
链接到我的 git:https ://github.com/romainbor/eteach
这是我的服务器文件夹中的 index.js :
const express = require('express');
const bodyparser = require('body-parser');
const security = require('./middleware/security');
const userRouter = require('./routes/user');
const AnnonceRouter = require('./routes/annonce');
const securityRouter = require('./routes/security');
const commentRouter = require('./routes/comment');
const mailRouter = require('./routes/mail')
const path = require('path');
const isDev = process.env.NODE_ENV !== 'production';
const PORT = process.env.PORT || 5000;
const PORT_CHAT = 3231
const app = express();
//app.use(express.static(path.resolve(__dirname, '../react-ui/build')));
const cors = require('cors');
var chat = require('http').createServer()
var io = module.exports.io = require('socket.io')(chat)
const SocketManager = require('./SocketManager')
io.on('connection', SocketManager)
chat.listen(PORT_CHAT, ()=>{
console.log("Connected to port:" + PORT_CHAT);
})
app.use(cors());
app.use(bodyparser.json());
app.use(security.verifyToken);
app.use('/', securityRouter);
app.use('/annonce', AnnonceRouter);
app.use('/user', userRouter);
app.use('/comment', commentRouter);
app.use('/mail', mailRouter);
// Serve static assets if in production
app.get('*', (req, res) => {
res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html')) // relative path
})
app.listen(PORT, function () {
console.error(`Node ${isDev ? 'dev server' : 'cluster worker '+process.pid}: listening on port ${PORT}`);
});
我的 package.json 在根目录:
"scripts": {
"start": "concurrently \"cd server && node index.js\" \"cd client && npm start\"",
"heroku-postbuild": "cd client && npm install && npm run build"
}
我的所有 console.log 都是从背后运行的:“应用程序正在侦听端口 ****”等,但在我的前面
2019-08-17T13:16:53.800476+00:00 app[web.1]:[1] 端口 32879 上已经有东西在运行。2019-08-17T13:16:53.840457+00:00 app[web.1] : [1] cd client && npm start 以代码 0 退出
如果你知道我做错了什么,我在听。
解决方案
尝试改变
chat.listen(PORT_CHAT, function () {
console.log("Connected to port:" + PORT_CHAT);
});
至
chat.listen(process.env.PORT_CHAT || PORT_CHAT, function () {
console.log("Connected to port:" + PORT_CHAT);
});
并尝试将 PORT_CHAT 环境变量设置为您需要的值
推荐阅读
- spring-boot - ORA-02396: 使用多个 DS 和 Hikari 时超出最大空闲
- ios - Flutter 连接:在 Android 上工作,但在 iOS 模拟器上,当我可以在 Safari 中打开网页时,我有互联网,但应用程序说没有互联网?
- excel-formula - 带有来自其他单元格的日期的 Excel 公式
- windows - windows exe与进程的关系
- web-application-firewall - 没有规则匹配时的 ModSecurity 默认操作?
- javascript - 带有 formData 的 axios.post 总是返回空
- c++ - 当复制构造在 C++ 中不可用时,为什么不调用复制分配运算符?
- android - 如何去除右溢出7.8像素
- c# - 使用 DirectoryInfo C# 创建到 Linux 服务器的目录
- c++ - 我已经用自制软件下载了 nlohmann,但我无法将它包含在我的 cpp 项目中