python - 使用 Anaconda 上的 Flask 在 IIS 上进行 Dash 加载时出现“加载资源失败”错误
问题描述
我正在尝试使用 IIS 服务器和 Anaconda 上的 WFastCGI 在 Flask 上设置 Dash 应用程序。我可能会丢失什么以至于找不到所需的 JS?我已经在服务器上测试了普通的 Flask 应用程序,它工作正常。
- IIS服务器版本:8.0
- 烧瓶=1.1.1
- 破折号=1.8.0
- 蟒蛇 3.6.8
我也尝试过app.css.config.serve_locally = False
,app.scripts.config.serve_locally = False
但是无论两者都是真/假,它都不起作用。
我也尝试过以下变体来创建服务器和应用程序对象。
server = flask.Flask(__name__)
app = dash.Dash(__name__, server=server)
下面是我的代码。
import dash
import dash_core_components as dcc
import dash_html_components as html
# external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
app = dash.Dash(__name__)#, external_stylesheets=external_stylesheets)
server = app.server
app.css.config.serve_locally = True
app.scripts.config.serve_locally = True
app.layout = html.Div(children=[
html.H1(children='Hello Dash'),
html.Div(children='''
Dash: A web application framework for Python.
'''),
dcc.Graph(
id='example-graph',
figure={
'data': [
{'x': [1, 2, 3], 'y': [4, 1, 2], 'type': 'bar', 'name': 'SF'},
{'x': [1, 2, 3], 'y': [2, 4, 5], 'type': 'bar', 'name': u'Montréal'},
],
'layout': {
'title': 'Dash Data Visualization'
}
}
)
])
if __name__ == '__main__':
app.run_server(debug=True)
chrome控制台上的错误如下。
GET http://127.0.0.1/_dash-component-suites/dash_renderer/polyfill@7.v1_2_3m1580483115.7.0.min.js net::ERR_ABORTED 404 (Not Found)
flask:22 GET http://127.0.0.1/_dash-component-suites/dash_renderer/react-dom@16.v1_2_3m1580483115.8.6.min.js net::ERR_ABORTED 404 (Not Found)
flask:21 GET http://127.0.0.1/_dash-component-suites/dash_renderer/react@16.v1_2_3m1580483115.8.6.min.js net::ERR_ABORTED 404 (Not Found)
flask:23 GET http://127.0.0.1/_dash-component-suites/dash_renderer/prop-types@15.v1_2_3m1580483115.7.2.min.js net::ERR_ABORTED 404 (Not Found)
flask:24 GET http://127.0.0.1/_dash-component-suites/dash_core_components/dash_core_components.v1_7_0m1580483133.min.js net::ERR_ABORTED 404 (Not Found)
flask:25 GET http://127.0.0.1/_dash-component-suites/dash_core_components/dash_core_components-shared.v1_7_0m1580483133.js net::ERR_ABORTED 404 (Not Found)
flask:26 GET http://127.0.0.1/_dash-component-suites/dash_html_components/dash_html_components.v1_0_2m1573845875.min.js net::ERR_ABORTED 404 (Not Found)
flask:27 GET http://127.0.0.1/_dash-component-suites/dash_renderer/dash_renderer.v1_2_3m1580483115.min.js net::ERR_ABORTED 404 (Not Found)
flask:22 GET http://127.0.0.1/_dash-component-suites/dash_renderer/react-dom@16.v1_2_3m1580483115.8.6.min.js net::ERR_ABORTED 404 (Not Found)
flask:23 GET http://127.0.0.1/_dash-component-suites/dash_renderer/prop-types@15.v1_2_3m1580483115.7.2.min.js net::ERR_ABORTED 404 (Not Found)
flask:24 GET http://127.0.0.1/_dash-component-suites/dash_core_components/dash_core_components.v1_7_0m1580483133.min.js net::ERR_ABORTED 404 (Not Found)
flask:25 GET http://127.0.0.1/_dash-component-suites/dash_core_components/dash_core_components-shared.v1_7_0m1580483133.js net::ERR_ABORTED 404 (Not Found)
flask:26 GET http://127.0.0.1/_dash-component-suites/dash_html_components/dash_html_components.v1_0_2m1573845875.min.js net::ERR_ABORTED 404 (Not Found)
flask:27 GET http://127.0.0.1/_dash-component-suites/dash_renderer/dash_renderer.v1_2_3m1580483115.min.js net::ERR_ABORTED 404 (Not Found)
flask:28 Uncaught ReferenceError: DashRenderer is not defined
at flask:28
生成的网页代码如下:
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta charset="UTF-8">
<title>Dash</title>
<link rel="icon" type="image/x-icon" href="/_favicon.ico?v=1.8.0">
</head>
<body>
<div id="react-entry-point">
<div class="_dash-loading">
Loading...
</div>
</div>
<footer>
<script id="_dash-config" type="application/json">{"url_base_pathname": null, "requests_pathname_prefix": "/", "ui": false, "props_check": false, "show_undo_redo": false}</script>
<script src="/_dash-component-suites/dash_renderer/polyfill@7.v1_2_3m1580483115.7.0.min.js"></script>
<script src="/_dash-component-suites/dash_renderer/react@16.v1_2_3m1580483115.8.6.min.js"></script>
<script src="/_dash-component-suites/dash_renderer/react-dom@16.v1_2_3m1580483115.8.6.min.js"></script>
<script src="/_dash-component-suites/dash_renderer/prop-types@15.v1_2_3m1580483115.7.2.min.js"></script>
<script src="/_dash-component-suites/dash_core_components/dash_core_components.v1_7_0m1580483133.min.js"></script>
<script src="/_dash-component-suites/dash_core_components/dash_core_components-shared.v1_7_0m1580483133.js"></script>
<script src="/_dash-component-suites/dash_html_components/dash_html_components.v1_0_2m1573845875.min.js"></script>
<script src="/_dash-component-suites/dash_renderer/dash_renderer.v1_2_3m1580483115.min.js"></script>
<script id="_dash-renderer" type="application/javascript">var renderer = new DashRenderer();</script>
</footer>
</body>
</html>
解决方案
我找到了解决办法。当我仔细查看 IIS 设置时,我发现它作为主网站的应用程序运行,而不是作为 IIS 的主网站运行。当我将它切换到主网站时,它可以找到所需 *.js 的路径,并且可以毫无问题地运行网页。
推荐阅读
- ios - 如何最好地保持一个托管对象的映射到另一个在 Swift 中保持同步?
- sql - 如何在 SQL Server 中循环语句
- apache-flink - 维基百科编辑事件中标志的含义
- r - 计算多列总数的百分比
- android - 如何在 Android N 上为 NativeActivity 动态加载本机共享库(.so)?
- python - 从有向图创建无向图
- c# - 无法将 System.string 转换为 System.Byte[]
- reactjs - 是什么让 React 库需要 preact-compat?
- android - 跨平台 IAP
- azure - Azure 中是否有任何用于高速文件共享的选项?