#python #html #reactjs #heroku
Вопрос:
Я получаю эту ошибку после запуска команды heroku logs —tail.
2021-05-18T13:06:18.026204 00:00 app[web.1]: File "/app/api/app.py", line 5, in <module>
2021-05-18T13:06:18.026205 00:00 app[web.1]: from HelloApiHandler import HelloApiHandler
2021-05-18T13:06:18.026205 00:00 app[web.1]: ModuleNotFoundError: No module named 'HelloApiHandler'
2021-05-18T13:06:50.495217 00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET
path="/" host=deploy-testv1.herokuapp.com request_id=7790eadd-a43b-49db-8eb0-27fff8d7a6bf
fwd="123.201.36.104" dyno= connect= service= status=503 bytes= protocol=https
2021-05-18T13:06:50.785798 00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET
path="/favicon.ico" host=deploy-testv1.herokuapp.com request_id=0d7d0f68-a99b-4783-af40-cb80f17b825b
fwd="123.201.36.104" dyno= connect= service= status=503 bytes= protocol=https
Вот app.py
файл, в котором я получаю ошибку в строке 5:
from flask import Flask, send_from_directory
from flask_restful import Api, Resource, reqparse
from flask_cors import CORS
# from api import HelloApiHandler
from HelloApiHandler import HelloApiHandler
# app = Flask(__name__, static_url_path='', static_folder='../build')
app = Flask(__name__, static_url_path='', static_folder='../build')
# CORS(app)
api = Api(app)
@app.route("/", defaults={'path':''})
def serve(path):
return send_from_directory(app.static_folder,'index.html')
api.add_resource(HelloApiHandler, '/flask/hello')
И вот HelloApiHandler.py
файл:
from flask_restful import Api, Resource, reqparse
class HelloApiHandler(Resource):
def get(self):
return {
'resultStatus': 'SUCCESS',
'message': "Hello Api Handler"
}
def post(self):
print(self)
parser = reqparse.RequestParser()
parser.add_argument('type', type=str)
parser.add_argument('message', type=str)
args = parser.parse_args()
print(args)
# note, the post req from frontend needs to match the strings here (e.g. 'type and 'message')
request_type = args['type']
request_json = args['message']
# ret_status, ret_msg = ReturnData(request_type, request_json)
# currently just returning the req straight
ret_status = request_type
ret_msg = request_json
if ret_msg:
message = "Your Message Requested: {}".format(ret_msg)
else:
message = "No Msg"
final_ret = {"status": "Success", "message": message}
return final_ret
Мой Файл Процесса:
web: gunicorn api.app:app
Я чувствую, что правильно импортирую файл HelloApiHandler, но все равно журнал heroku выдает ошибку. В чем причина?
Структура каталогов:
api
venv
app.py
HelloApiHandler.py
requirements.txt
build
node_modules
public
src
Procfile
package.json
requirements.txt
Комментарии:
1. Пожалуйста, дайте мне знать, если у кого-нибудь возникнут какие-либо вопросы
2. Я думаю, что вы импортируете
HelloApiHandler
изHelloApiHandler
, но есть толькоget
иpost
вHelloApiHandler
, поэтому он не находит модуль.3. Я воспользовался этой ссылкой: towardsdatascience.com/. … Я сделал это так же, как и они. Кроме того, приложение отлично работает на локальном хосте, но выдает ошибку для heroku. Если ссылка не открывается, попробуйте открыть ее в режиме инкогнито.
4. В приведенном выше примере они импортируются как
from api.HelloApiHandler import HelloApiHandler
, а в вашем примере все по-другому. так, может быть, в этом и есть проблема?5. Да, это потому, что их файл HelloApiHandler находится в другом каталоге, в то время как мой файл HelloApiHandler находится в том же каталоге.