[英]Heroku process.env.port is undefined
我正在嘗試在 heroku 上運行一個 node.js 應用程序。 我讓它在本地工作,但是當我在 heroku 上部署它時,我收到以下錯誤:
Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
這是我嘗試偵聽的端口:
const PORT = process.env.port || 3000;
當我記錄 process.env.port 是什么時,它說 process.env.port 未定義。
我需要做什么來自動設置端口?
編輯(修復):所以我發現了問題所在。 javascript 正在被縮小,但 process.env.port 被縮小到不起作用的東西。 感謝您的幫助。
任何人都可以訪問該職位。 首先檢查您是否正確編寫了process.env.PORT
。 我正在編寫.Port
,我花了 4 個小時才找出錯誤
您應該在 heroku 上運行服務器之前傳遞配置參數。 在終端類型
$ heroku config:set PORT=3333
然后你就可以得到這樣的端口號
const PORT = process.env.PORT || 3000;
如果您從終端分配
console.log(PORT) => 3333
否則
console.log(PORT) => 3000
我遇到了同樣的問題,並找到了將 heroku dyno 端口變量傳遞給節點啟動腳本的解決方案。
如果您在項目的根目錄中創建了 Procfile,只需打開它。
如果您還沒有創建 Procfile,只需轉到項目的根目錄並創建一個名為“Procfile”的文件。 該文件沒有擴展名,它有助於 heroku 獲得應用程序的起點。 有關它的更多詳細信息: Procfile
在Node.JS Heroku 文檔中,沒有提供任何示例應該如何看起來像 Procfile。
就我而言,我使用的是 Typescript,我的 .js 文件輸出目錄位於項目文件夾的 /build 目錄中。 我假設你有同樣的情況。 如果沒有,只需放置啟動文件的目錄。
簡介:
web: PORT=$PORT node ./build/index.js
如果您使用 babel,請不要在 Heroku 中使用 babel 插件babel-plugin-transform-inline-environment-variables 。 我認為 Heroku 在進行部署時沒有設置 PORT 變量,所以這就是為什么你會得到 undefined 的原因。
只是想把這個留給像我這樣困惑的人,你必須使用
process.env.PORT
不是
process.env.$PORT
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.