![](/img/trans.png)
[英]Node.js https request work locally but throws timeout when deployed to heroku
[英]Why won't Node `https.get` request work on `heroku local` but work when deployed?
我有一個自己編寫的Node.js應用程序,並已通過Bash成功部署到了Heroku應用程序。 從我在家中運行Ubuntu的計算機上,它在本地也可以正常運行。
但是,我剛剛將存儲庫克隆到Windows機器上,並且當我成功地將更新推送到Heroku遠程服務器時,只要我從Windows運行heroku local
並嘗試訪問本地版本(localhost:5000),該更新就可以正常工作,該頁面出現錯誤,我的命令行返回TypeError: Request path contains unescaped characters
和layer.js:95.5
。
該應用程序使用https.get
,這似乎是本地的問題所在。
我不願意嘗試修改我的代碼,因為它可以在Heroku上正常工作,也可以在我的Ubuntu計算機上正常工作-因此只能假定需要在Windows計算機上進行配置。
知道可能是什么問題嗎?
注意在Heroku中為config / .env
選擇的變量鍵。 Windows有一些保留鍵(例如user
和path
),這意味着嘗試根據這些鍵設置自己的值將不起作用。
事實證明,問題出在我選擇的.env
文件中使用的變量名。
當您有不想提交到存儲庫的數據(在我的情況下,是我的帳戶的身份驗證密鑰和詳細信息)時,可以將它們作為“ config vars”添加到Heroku中- key=value
對,Heroku保持分隔到您的代碼,以便您可以根據需要對版本庫進行版本控制和共享,其他人可以添加自己的詳細信息。
但是,在本地使用工具欄上的heroku local
命令運行Heroku時,這些變量需要來自其他地方。 Heroku的幫助建議在名為.env
的文件.env
它們設置為key=value
對(然后可以將其添加到.gitignore
以防止意外提交。
不幸的是,就我而言,導致問題的原因是我選擇了.env
中的可變鍵。 我已經在名為user
和path
變量上創建了依賴項,但這些依賴項似乎在Windows上已保留,並且具有特殊用途,因此無法被.env
文件中的內容覆蓋。 這就是為什么在我的Ubuntu計算機上對我有用的東西不能在Windows上直接工作的原因。
您可以通過在Windows計算機上從Node調用console.log( process.env.user
, process.env.path
)來查看實際情況。
現在,我已經將變量名更改為非保留的heroku local
可以正常工作了。 通過node
命令調用程序仍然無法進行,因為它沒有設置為從.env
以Heroku形式獲取變量。
希望這對其他人有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.