我想部署一個簡單的應用程序,沒有什麼大,但我不斷收到此錯誤的Heroku構建失敗 - 錯誤R10(啓動超時)
錯誤R10(啓動超時) - >網絡進程未能綁定到$ PORT在60秒內發射
即使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"
},
...
嗨斯科特。如何使用端口,不通過process.env.PORT Heroku使用它自己的端口。我在生產版本中提到的唯一其他端口是webpack軟件包中的publicPath的http:// localhost:3001。 **編輯**實際上我甚至沒有在生產中使用該端口。我通過腳本標記直接在我的html中引用包文件。 –
var代替了端口上的const –
謝謝Scott。我試過了,但仍然沒有運氣。繼續得到相同的錯誤。 –