2017-06-22 28 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無法連接。

相關問題