我想部署一个简单的应用程序,没有什么大,但我不断收到此错误的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。我试过了,但仍然没有运气。继续得到相同的错误。 –