2016-08-23 45 views
0

我想在heroku上運行node.js應用程序。我懂了工作的地方,但是當我在Heroku上部署它,我得到以下錯誤:Heroku process.env.port未定義

Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch 

這是我嘗試偵聽的端口:

const PORT = process.env.port || 3000; 

當我記錄了哪些過程。 env.port是它說process.env.port是未定義的。

有什麼我需要做的自動設置端口?

編輯(修正): 所以我發現問題出在哪裏。 JavaScript正在被縮小,但process.env.port被縮小到某些不起作用的地步。謝謝您的幫助。

+2

我認爲它應該是'process.env.PORT'。 –

+0

@Зелёный:我用大寫的PORT試了一下,沒有任何改變。 – Nylsoo

+0

所以看起來像'$ PORT'變量沒有被定義。 –

回答

0

在heroku上運行服務器之前,您應該先通過config args。在終端類型

$ heroku config:set PORT=3333 

,那麼你就可以得到這樣

const PORT = process.env.PORT || 3000; 

端口號如果從終端

console.log(PORT) => 3333 

否則

console.log(PORT) => 3000 
+0

不,使用process.env.PORT你應該自己定義它,如果它被自動定義,沒有理由使用||。運算符,因爲process.env.PORT永遠不會是虛假的 – donquixote

+0

我已經完成了你所說的,現在我有一個配置變量3333.仍然當我登錄process.env.PORT我​​得到'undefined'什麼我忘了? – Nylsoo

+0

$ heroku配置。運行這個命令,它會顯示分配的所有變量。如果沒有PORT:3333,那麼你拼錯了一些東西。請看看Heroku的文檔,然後設置你的服務器https://devcenter.heroku.com/articles/getting-started-with-nodejs#define-config-vars – donquixote

0

如果分配你使用babel,不要使用babel插件在Heroku中的babel-plugin-transform-inline-environment-variables。 我認爲Heroku在部署時沒有設置PORT變量,所以這就是爲什麼你會得到未定義的原因。