我正在尝试部署一个简单的应用程序,没有什么大的但我一直收到此错误
错误R10(启动超时) - > Web进程无法在启动后60秒内绑定到$ PORT
尽管Heroku在60秒之前完成了部署。我也在我的服务器中设置了process.env.PORT。我在Heroku上有一些应用程序,所以我熟悉部署。
我事先制作服务器包文件(src / build / bundle.js)和客户端包文件(src / dist / bundle.js)并将所有内容推送到Heroku。在package.json中有一个启动脚本,应该只启动服务器。
一切都在当地运作良好。
我正在使用服务器端渲染,我在客户端分离了bundle,vendor和extractt css。在服务器端我也捆绑文件,我使用html-webpack-plugin。不知道是否有任何连接,不应该是。
prodServer.js
const APP_PORT: number = conf.APP_PORT
const PORT: any = process.env.PORT || APP_PORT
const app: Express = new Express()
app.set('views', path.join(__dirname, 'views'))
app.set('view engine', 'ejs')
app.use(Express.static(path.join(__dirname, '../', 'dist'), {maxAge: '1y'}))
app.use((req: Object, res: Object, next: () => void): void => {
res.set('Cache-Control', 'no-cache')
return next()
})
app.get('*', (req: Object, res: Object) => {
res.render('index', {app: req.body, webpack: req.chunk})
})
app.listen(PORT, () => {
console.log(`
Express server is up on port ${PORT}
Production environment
`)
})
的package.json
{
"name": "QR",
"version": "1.0.0",
"description": "Q",
"main": "prodServer.js",
"license": "MIT",
"scripts": {
"clean": "rm -rf ./src/dist && rm -rf ./src/build",
"build-client": "cross-env NODE_ENV=production webpack -p --config webpack.config.prod.js",
"build-server": "cross-env NODE_ENV=production webpack -p --config webpack.config.server.prod.js",
"start": "cross-env NODE_ENV=production node ./src/build/bundle.js"
},
...
答案 0 :(得分:0)
<强>解强>
确定。我设法修复它。问题是 DefinePlugin 。我有process.env.NODE_ENV:生产,它在我的代码中交换process.env.PORT,所以Heroku无法连接。