当我用flask run
从终端运行Flask时,如果我的代码有错误,我看到"TypeError:异常必须派生自BaseException"而不是实际的误差。为了调试它,我需要打开浏览器并检查Werkzeug调试器中的exc_info
变量,这是不方便的。弗拉斯克为什么要这样做?如何在终端上看到实际的错误?
$ FLASK_APP=example flask run
Traceback (most recent call last):
File "[...]/lib/python3.9/site-packages/flask/cli.py", line 356, in __call__
self._flush_bg_loading_exception()
File "[...]/lib/python3.9/site-packages/flask/cli.py", line 344, in _flush_bg_loading_exception
raise exc_info
TypeError: exceptions must derive from BaseException
这是Flask 2.0中引入的一个bug,将在Flask 2.0.2发布时修复。CLI错误地重新抛出sys.exc_info()
,而不是只抛出异常对象。在此之前,您可以通过运行flask run --eager-loading
来关闭延迟加载。