2017-06-22 58 views
0

我想部署一个简单的应用程序,没有什么大,但我不断收到此错误的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" 
    }, 
... 
+0

嗨斯科特。如何使用端口,不通过process.env.PORT Heroku使用它自己的端口。我在生产版本中提到的唯一其他端口是webpack软件包中的publicPath的http:// localhost:3001。 **编辑**实际上我甚至没有在生产中使用该端口。我通过脚本标记直接在我的html中引用包文件。 –

+0

var代替了端口上的const –

+0

谢谢Scott。我试过了,但仍然没有运气。继续得到相同的错误。 –

回答

0

SOLUTION

确定。我设法修复它。问题是DefinePlugin。我有process.env.NODE_ENV:production,它在我的代码中交换了process.env.PORT,所以Heroku无法连接。

相关问题