我最近将 Flask 应用程序部署到 Heroku 并成功创建了数据库,我遇到了一个问题,我使用 Postman 测试了 GET 和 POST 请求,一切都按预期工作。但是,GET 和 POST 请求在使用 fetch 或 axios 时不起作用。当我尝试进行这些调用时,我从 Heroku cli 收到此错误:
2021-08-01T19:12:40.268303+00:00 app[web.1]: 10.5.162.164 - - [01/Aug/2021:19:12:40 +0000] "POST /login HTTP/1.1" 500 290 "http://localhost:3000/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36"
2021-08-01T19:13:24.814075+00:00 heroku[router]: at=info method=POST path="/register" host=phonica-api.herokuapp.com request_id=e0fd759f-0de6-4b17-9ccf-382910d8e6f7 fwd="127.0.0.1,68.56.194.182" dyno=web.1 connect=1ms service=4ms status=500 bytes=541 protocol=https
2021-08-01T19:13:24.811017+00:00 app[web.1]: [2021-08-01 19:13:24,810] ERROR in app: Exception on /register [POST]
2021-08-01T19:13:24.811024+00:00 app[web.1]: Traceback (most recent call last):
2021-08-01T19:13:24.811025+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 2446, in wsgi_app
2021-08-01T19:13:24.811026+00:00 app[web.1]: ctx.push()
2021-08-01T19:13:24.811026+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/ctx.py", line 390, in push
2021-08-01T19:13:24.811027+00:00 app[web.1]: self.session = session_interface.open_session(self.app, self.request)
2021-08-01T19:13:24.811028+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask_session/sessions.py", line 334, in open_session
2021-08-01T19:13:24.811029+00:00 app[web.1]: data = self.cache.get(self.key_prefix + sid)
2021-08-01T19:13:24.811029+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/cachelib/file.py", line 127, in get
2021-08-01T19:13:24.811030+00:00 app[web.1]: return pickle.load(f)
2021-08-01T19:13:24.811035+00:00 app[web.1]: ValueError: unsupported pickle protocol: 5
2021-08-01T19:13:24.811638+00:00 app[web.1]: [2021-08-01 19:13:24,811] ERROR in app: Request finalizing failed with an error while handling an error
2021-08-01T19:13:24.811639+00:00 app[web.1]: Traceback (most recent call last):
2021-08-01T19:13:24.811640+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 2446, in wsgi_app
2021-08-01T19:13:24.811640+00:00 app[web.1]: ctx.push()
2021-08-01T19:13:24.811640+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/ctx.py", line 390, in push
2021-08-01T19:13:24.811641+00:00 app[web.1]: self.session = session_interface.open_session(self.app, self.request)
2021-08-01T19:13:24.811641+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask_session/sessions.py", line 334, in open_session
2021-08-01T19:13:24.811642+00:00 app[web.1]: data = self.cache.get(self.key_prefix + sid)
2021-08-01T19:13:24.811642+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/cachelib/file.py", line 127, in get
2021-08-01T19:13:24.811642+00:00 app[web.1]: return pickle.load(f)
2021-08-01T19:13:24.811643+00:00 app[web.1]: ValueError: unsupported pickle protocol: 5
2021-08-01T19:13:24.811643+00:00 app[web.1]:
2021-08-01T19:13:24.811644+00:00 app[web.1]: During handling of the above exception, another exception occurred:
2021-08-01T19:13:24.811644+00:00 app[web.1]:
2021-08-01T19:13:24.811644+00:00 app[web.1]: Traceback (most recent call last):
2021-08-01T19:13:24.811645+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1970, in finalize_request
2021-08-01T19:13:24.811645+00:00 app[web.1]: response = self.process_response(response)
2021-08-01T19:13:24.811645+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 2267, in process_response
2021-08-01T19:13:24.811646+00:00 app[web.1]: response = handler(response)
2021-08-01T19:13:24.811647+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask_login/login_manager.py", line 399, in _update_remember_cookie
2021-08-01T19:13:24.811647+00:00 app[web.1]: if '_remember' not in session and \
2021-08-01T19:13:24.811647+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/werkzeug/local.py", line 379, in <lambda>
2021-08-01T19:13:24.811648+00:00 app[web.1]: __contains__ = lambda x, i: i in x._get_current_object()
2021-08-01T19:13:24.811698+00:00 app[web.1]: TypeError: argument of type 'NoneType' is not iterable
这是我如何使用 fetch 发出请求:
const formData = new FormData();
formData.append('password', password);
formData.append('username', username);
return fetch("/login", {
method: 'post',
body: formData
})
使用 axios:
const response = await axios
.post("/login", {
username,
password,
});
if (response.data.token) {
localStorage.setItem("user", JSON.stringify(response.data));
}
return response.data;
任何帮助将不胜感激,谢谢!