2016-12-16 66 views
2

我想設置Ghost(node.js博客應用程序)在一臺heroku服務器上運行。我在這裏遵循this教程,但我在加載應用程序URL時遇到應用程序錯誤。望着日誌,我發現了以下堆棧跟蹤:在heroku服務器上的幽靈博客的密碼認證失敗

2016-12-16T10:00:08.185701+00:00 heroku[web.1]: Starting process with command `NODE_ENV=production node index.js` 
2016-12-16T10:00:11.989635+00:00 app[web.1]: 
2016-12-16T10:00:11.989655+00:00 app[web.1]: ERROR: password authentication failed for user "xxxxxxxxxxxxxx" 
2016-12-16T10:00:11.989656+00:00 app[web.1]: error: password authentication failed for user "xxxxxxxxxxxxxx" 
2016-12-16T10:00:11.989656+00:00 app[web.1]: 
2016-12-16T10:00:11.989658+00:00 app[web.1]:  at Connection.parseMessage (/app/node_modules/pg/lib/connection.js:361:17) 
2016-12-16T10:00:11.989657+00:00 app[web.1]:  at Connection.parseE (/app/node_modules/pg/lib/connection.js:534:11) 
2016-12-16T10:00:11.989659+00:00 app[web.1]:  at TLSSocket.<anonymous> (/app/node_modules/pg/lib/connection.js:105:22) 
2016-12-16T10:00:11.989660+00:00 app[web.1]:  at emitOne (events.js:96:13) 
2016-12-16T10:00:11.989661+00:00 app[web.1]:  at readableAddChunk (_stream_readable.js:176:18) 
2016-12-16T10:00:11.989662+00:00 app[web.1]:  at TLSSocket.Readable.push (_stream_readable.js:134:10) 
2016-12-16T10:00:11.989660+00:00 app[web.1]:  at TLSSocket.emit (events.js:188:7) 
2016-12-16T10:00:11.989663+00:00 app[web.1]:  at TLSWrap.onread (net.js:548:20) 
2016-12-16T10:00:11.989664+00:00 app[web.1]: 
2016-12-16T10:00:12.059675+00:00 heroku[web.1]: Process exited with status 0 
2016-12-16T10:00:12.098899+00:00 heroku[web.1]: State changed from starting to crashed 
2016-12-16T10:00:11.574238+00:00 app[web.1]: WARNING: Ghost is attempting to use a direct method to send email. 
2016-12-16T10:00:11.574254+00:00 app[web.1]: It is recommended that you explicitly configure an email service. 
2016-12-16T10:00:11.575112+00:00 app[web.1]: Help and documentation can be found at http://support.ghost.org/mail. 
2016-12-16T10:00:11.575114+00:00 app[web.1]: 
2016-12-16T12:20:59.497399+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=ai-blog.herokuapp.com request_id=a725a350-ade1-4f00-9b8a-125fac34eb23 fwd="82.46.0.56" dyno= connect= service= status=503 bytes= 
2016-12-16T12:21:01.504908+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=ai-blog.herokuapp.com request_id=cc0c4f9b-f3af-4867-942f-0c7f295f9b90 fwd="82.46.0.56" dyno= connect= service= status=503 bytes= 
2016-12-16T12:21:03.381794+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=ai-blog.herokuapp.com request_id=ee190254-0159-4ba0-aa74-6e58f661c966 fwd="82.46.0.56" dyno= connect= service= status=503 bytes= 

看來,這裏的錯誤的重要組成部分,是密碼失敗:但是我有雙和三倍檢查所有的heroku varibles設置正確,即沒有錯別字,在字符串的起始端沒有多餘的空格。

此外,該應用程序在本地運行良好。

這個問題似乎比較常見,但我已經嘗試了其他帖子的大部分解決方案,似乎沒有任何東西可以解決問題。

的解決方案,我已經試過:

  • 檢查了所有可變因素錯別字
  • 經過正確的數據庫促進
  • 手動添加用戶credendials到遠程數據庫(出於某種原因,我仍然可以通過命令行訪問遠程數據庫)
  • 請遵循以下命令heroku config:set PGSSLMODE=require
  • 確保我在連接到URL時使用https中的https網站通過瀏覽器
  • 我已經添加了以下在我config.js ssl: true
  • 我也檢查了生產環境的DB PARAMS,我在生產環境中

Sugguestions那我還沒有試過:

  • 有人建議節點需要更新。但是我看不出任何更新heroku使用的節點版本的方法。
  • Somone建議postgres需要更新。但是我看不出有什麼方法可以在heroku服務器上進行更新。但是,我確實已將package.json文件中的版本號從4.1.1更新到4.5.5,並將其從optionalDependencies移至依賴項。
  • 編輯pg_hba.conf的 - 再次,我想這個文件存在Heroku的服務器上,我不能訪問它

任何人有什麼想法?

回答

1

我在嘗試升級到Ghost版本0.11.3並部署到Heroku時遇到同樣的問題。

我能夠通過升級PostgreSQL npm軟件包來解決這個問題。

package.json

{ 
    "dependencies": { 
    "pg": "^4.5.5", 
    }, 
    "optionalDependencies": { 
    "pg": "^4.5.5" 
    } 
} 

,你也將需要修改npm-shrinkwrap.json文件:通過採取一看

{ 
    "dependencies": { 
    "pg": { 
     "version": "^4.5.5", 
     "from": "[email protected]", 
     "resolved": "https://registry.npmjs.org/pg/-/pg-4.5.5.tgz", 
     "dependencies": {...} 
    } 
    } 
} 

之後,檢查PG NPM包的版本是正確更新Heroku的部署日誌。它應該是這樣的:

remote: -----> Build succeeded! 
remote:  ├── ... 
remote:  ├── [email protected] 
remote:  ├── ... 
+0

它爲我工作,謝謝! – cyberz

+0

對不起,我花了這麼長時間接受答案!但是,這是有效的! –