問題描述 朋友想製造一個 LINE 機器人,自學學習撰寫 Python Flask Web Framework ,並部署到 Heroku 上,預期傳訊息時機器人會自動回覆相同的訊息內容,但卻沒有顯示在對話視窗內,於是拜託我幫他看。
首先要看的就是 Heroku console log ,下 heroku logs --tail
從裡面一定可以找出一些蛛絲馬跡,果不其然看到一些訊息,從日誌檔可得知程式是包版成功的,但很顯然程式發生錯誤, Web server 根本就沒有啟動,官方網站給出的解決方法是下 heroku ps:scale web=1
這組指令,以手動方式將 Web server 程序部署到他們的引擎 dyno 上。
Heroku 上日誌檔 1 2 2022-03-12T05:20:20.000000+00:00 app[api]: Build succeeded 2022-03-12T05:20:30.962092+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/favicon.ico" host=groupbuyingchatbot.herokuapp.com request_id=808970d4-836d-40e6-9f8a-1e3b3a999199 fwd="42.77.131.204" dyno= connect= service= status=503 bytes= protocol=https
Heroku H14 錯誤代碼解釋 1 2 3 4 5 6 7 H14 - No web dynos running This is most likely the result of scaling your web dynos down to 0 dynos. To fix it, scale your web dynos to 1 or more dynos: heroku ps:scale web=1 Use the heroku ps command to determine the state of your web dynos. 2010-10-06T21:51:37-07:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/" host=myapp.herokuapp.com fwd=17.17.17.17 dyno= connect= service= status=503 bytes=
你以這樣就解決問題了嗎?並沒有!我下了這道指令回覆訊息仍是找不是 Web Server 的程序,後續我確認了 Python 有沒有語法上的錯誤、部署腳本、套件 requirements.txt,也嘗試在本機上執行,皆無問題。
1 2 3 gordonfang$ heroku ps:scale web=1 Scaling dynos... ! ! couldn't find that process type (web).
解決方法 隔一天再次檢查才發現原來朋友寫的 Procfile 多了副檔名,是 Procfile.txt , Procfile 是 Heroku 的部署腳本,告訴他包版完後要跑哪一個檔案將 Web Server 啟動起來,重新調整完後機器人就能順利回覆訊息。
1 2 3 4 @handler.add(MessageEvent, message=TextMessage ) def handle_message (event ): message = text=event.message.text line_bot_api.reply_message(event.reply_token, TextSendMessage(message))