"Error loading dependencies" 在企业 IE 中使用某些 dcc 元素时 Chrome
"Error loading dependencies" when using some dcc elements in corporate IE and Chrome
我在公司安装的 Internet Explorer 11 和 Chrome 51 中收到“加载依赖项错误”的错误消息,但在我自己安装的 up-to-date Chrome 中没有。另外,如果我打开开发者工具,Internet Explorer 可以正常工作。
IE 控制台提供以下错误信息
HTML1300: Navigation occurred.
supplier
This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.
SCRIPT5009: 'Uint8ClampedArray' is undefined
plotly-1.35.2.min.js (7,1186569)
SCRIPT5009: 'Set' is undefined
bundle.js (21,23784)
Error: dash_core_components was not found.
{
[functions]: ,
description: "dash_core_components was not found.",
message: "dash_core_components was not found.",
name: "Error",
stack: "Error: dash_core_components was not found.
at e.default.resolve (http://<url>:8080/supplier/_dash-component-suites/dash_renderer/bundle.js?v=0.11.3:9:28196)
at s (http://<url>:8080/supplier/_dash-component-suites/dash_renderer/bundle.js?v=0.11.3:9:16176)
at s (http://<url>:8080/supplier/_dash-component-suites/dash_renderer/bundle.js?v=0.11.3:9:15719)
at value (http://<url>:8080/supplier/_dash-component-suites/dash_renderer/bundle.js?v=0.11.3:9:16980)
at b._renderValidatedComponentWithoutOwnerOrContext (http://<url>:8080/supplier/_dash-component-suites/dash_renderer/react-dom@15.4.2.min.js?v=0.11.3:13:10739)
at b._renderValidatedComponent (http://<url>:8080/supplier/_dash-component-suites/dash_renderer/react-dom@15.4.2.min.js?v=0.11.3:13:10870)
at b.performInitialMount (http://<url>:"
}
Unhandled promise rejection TypeError: Unable to get property 'find' of undefined or null reference
"Unhandled promise rejection"
{
[functions]: ,
description: "Unable to get property 'find' of undefined or null reference",
message: "Unable to get property 'find' of undefined or null reference",
name: "TypeError",
number: -2146823281,
stack: "TypeError: Unable to get property 'find' of undefined or null reference
at l (http://<url>:8080/supplier/_dash-component-suites/dash_renderer/bundle.js?v=0.11.3:1:29665)
at Anonymous function (http://<url>:8080/supplier/_dash-component-suites/dash_renderer/bundle.js?v=0.11.3:1:29458)
at Anonymous function (http://<url>:8080/supplier/_dash-component-suites/dash_renderer/bundle.js?v=0.11.3:29:941)
at f.dispatch (http://<url>:8080/supplier/_dash-component-suites/dash_renderer/bundle.js?v=0.11.3:29:1326)
at Anonymous function (http://<url>:8080/supplier/_dash-component-suites/dash_renderer/bundle.js?v=0.11.3:1:30985)
at u (http://<url>:8080/supplier/_dash-component-suites/dash_renderer/bundle.js?v=0.11.3:15:22048)
at Anonymous function (http://<url>:8080/supplier/_dash-component-suites/"
}
这是我的 dash 应用程序的大量精简版本,它会产生相同的错误。 tool
是我的包,里面有一个烧瓶实例。
import dash
import dash_core_components as dcc
import dash_html_components as html
import plotly.graph_objs as go
import pandas as pd
from functools import partial
import datetime as dt
from tool import server, session, blu, cache, CACHE_TIMEOUT
app_tst = dash.Dash(__name__, server=server, url_base_pathname='/ie_test/')
app_tst.css.config.serve_locally = True
app_tst.scripts.config.serve_locally = True
app_tst.layout = html.Div([
"hi!",
dcc.Dropdown(
id='tstdropdown',
options=[{'label': str(x+1), 'value': str(x)} for x in range(10)],
placeholder='Dropdown test'
),
dcc.RadioItems(
options=[
{'label': '1', 'value': '1'},
{'label': '2', 'value': '2'},
{'label': '3', 'value': '3'},
],
value='3',
id='radiotest'
),
dcc.RangeSlider(
id='rangetest',
min=0,
max=10,
marks=[str(x) for x in range(11)],
pushable=0,
value=5
),
dcc.Graph(
id='graphtest',
figure={}
)
])
当我同时删除 dcc.Graph
和 dcc.RangeSlider
时,应用程序运行正常。单独使用 dcc.Graph
或 dcc.RangeSlider
也会产生 "error loading dependencies"
问题。
我试过以下方法:
- 将
'IE=edge'
添加到烧瓶中的 headers
- 使用
app_vndr.css.config.serve_locally = True
和 app_vndr.scripts.config.serve_locally = True
在本地提供脚本以及将 /static/path:path/
路由到正确文件的 flask 函数。
- 正在加载
babel.js
的 polyfill。不过,似乎 Plotly 已经在这样做了,因为我收到了一条 you can only have one instance of babel.js
消息。
我应该注意什么来解决这个问题?我觉得我错过了一些愚蠢的东西,但我不确定要检查或尝试什么。
在 plotly 论坛上与 mod 交谈后,以下步骤解决了问题:
- 从
dash-core-components==0.21.0
升级到 dash-core-components==0.22.1
- 提供有关该图的实际信息
没有 figure={...}
的填充字典,问题仍然存在。
import dash
import dash_core_components as dcc
import dash_html_components as html
import plotly.graph_objs as go
import pandas as pd
from functools import partial
import datetime as dt
from SupplyChainReportingTool import server, session, blu, cache, CACHE_TIMEOUT
app_tst = dash.Dash(__name__, server=server, url_base_pathname='/ie_test/')
app_tst.css.config.serve_locally = True
app_tst.scripts.config.serve_locally = True
layout = go.Layout(
yaxis=dict(title='Count',range=[0, 100],fixedrange=True,side='right',zeroline=False,showgrid=False),
yaxis2=dict(title='percent',range=[0, 1],fixedrange=True,side='left',overlaying='y')
)
data = [go.Scatter(x=[],y=[],name='Data',mode='lines+markers')]
app_tst.layout = html.Div([
dcc.Graph(
id='graphtest',
figure={'data': data, 'layout': layout}
)
])
有了这个工作,我仍然需要回到 dash-core-components==0.21.0
看看这是否真的是个问题。
我在公司安装的 Internet Explorer 11 和 Chrome 51 中收到“加载依赖项错误”的错误消息,但在我自己安装的 up-to-date Chrome 中没有。另外,如果我打开开发者工具,Internet Explorer 可以正常工作。
IE 控制台提供以下错误信息
HTML1300: Navigation occurred.
supplier
This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.
SCRIPT5009: 'Uint8ClampedArray' is undefined
plotly-1.35.2.min.js (7,1186569)
SCRIPT5009: 'Set' is undefined
bundle.js (21,23784)
Error: dash_core_components was not found.
{
[functions]: ,
description: "dash_core_components was not found.",
message: "dash_core_components was not found.",
name: "Error",
stack: "Error: dash_core_components was not found.
at e.default.resolve (http://<url>:8080/supplier/_dash-component-suites/dash_renderer/bundle.js?v=0.11.3:9:28196)
at s (http://<url>:8080/supplier/_dash-component-suites/dash_renderer/bundle.js?v=0.11.3:9:16176)
at s (http://<url>:8080/supplier/_dash-component-suites/dash_renderer/bundle.js?v=0.11.3:9:15719)
at value (http://<url>:8080/supplier/_dash-component-suites/dash_renderer/bundle.js?v=0.11.3:9:16980)
at b._renderValidatedComponentWithoutOwnerOrContext (http://<url>:8080/supplier/_dash-component-suites/dash_renderer/react-dom@15.4.2.min.js?v=0.11.3:13:10739)
at b._renderValidatedComponent (http://<url>:8080/supplier/_dash-component-suites/dash_renderer/react-dom@15.4.2.min.js?v=0.11.3:13:10870)
at b.performInitialMount (http://<url>:"
}
Unhandled promise rejection TypeError: Unable to get property 'find' of undefined or null reference
"Unhandled promise rejection"
{
[functions]: ,
description: "Unable to get property 'find' of undefined or null reference",
message: "Unable to get property 'find' of undefined or null reference",
name: "TypeError",
number: -2146823281,
stack: "TypeError: Unable to get property 'find' of undefined or null reference
at l (http://<url>:8080/supplier/_dash-component-suites/dash_renderer/bundle.js?v=0.11.3:1:29665)
at Anonymous function (http://<url>:8080/supplier/_dash-component-suites/dash_renderer/bundle.js?v=0.11.3:1:29458)
at Anonymous function (http://<url>:8080/supplier/_dash-component-suites/dash_renderer/bundle.js?v=0.11.3:29:941)
at f.dispatch (http://<url>:8080/supplier/_dash-component-suites/dash_renderer/bundle.js?v=0.11.3:29:1326)
at Anonymous function (http://<url>:8080/supplier/_dash-component-suites/dash_renderer/bundle.js?v=0.11.3:1:30985)
at u (http://<url>:8080/supplier/_dash-component-suites/dash_renderer/bundle.js?v=0.11.3:15:22048)
at Anonymous function (http://<url>:8080/supplier/_dash-component-suites/"
}
这是我的 dash 应用程序的大量精简版本,它会产生相同的错误。 tool
是我的包,里面有一个烧瓶实例。
import dash
import dash_core_components as dcc
import dash_html_components as html
import plotly.graph_objs as go
import pandas as pd
from functools import partial
import datetime as dt
from tool import server, session, blu, cache, CACHE_TIMEOUT
app_tst = dash.Dash(__name__, server=server, url_base_pathname='/ie_test/')
app_tst.css.config.serve_locally = True
app_tst.scripts.config.serve_locally = True
app_tst.layout = html.Div([
"hi!",
dcc.Dropdown(
id='tstdropdown',
options=[{'label': str(x+1), 'value': str(x)} for x in range(10)],
placeholder='Dropdown test'
),
dcc.RadioItems(
options=[
{'label': '1', 'value': '1'},
{'label': '2', 'value': '2'},
{'label': '3', 'value': '3'},
],
value='3',
id='radiotest'
),
dcc.RangeSlider(
id='rangetest',
min=0,
max=10,
marks=[str(x) for x in range(11)],
pushable=0,
value=5
),
dcc.Graph(
id='graphtest',
figure={}
)
])
当我同时删除 dcc.Graph
和 dcc.RangeSlider
时,应用程序运行正常。单独使用 dcc.Graph
或 dcc.RangeSlider
也会产生 "error loading dependencies"
问题。
我试过以下方法:
- 将
'IE=edge'
添加到烧瓶中的 headers - 使用
app_vndr.css.config.serve_locally = True
和app_vndr.scripts.config.serve_locally = True
在本地提供脚本以及将/static/path:path/
路由到正确文件的 flask 函数。 - 正在加载
babel.js
的 polyfill。不过,似乎 Plotly 已经在这样做了,因为我收到了一条you can only have one instance of babel.js
消息。
我应该注意什么来解决这个问题?我觉得我错过了一些愚蠢的东西,但我不确定要检查或尝试什么。
在 plotly 论坛上与 mod 交谈后,以下步骤解决了问题:
- 从
dash-core-components==0.21.0
升级到dash-core-components==0.22.1
- 提供有关该图的实际信息
没有 figure={...}
的填充字典,问题仍然存在。
import dash
import dash_core_components as dcc
import dash_html_components as html
import plotly.graph_objs as go
import pandas as pd
from functools import partial
import datetime as dt
from SupplyChainReportingTool import server, session, blu, cache, CACHE_TIMEOUT
app_tst = dash.Dash(__name__, server=server, url_base_pathname='/ie_test/')
app_tst.css.config.serve_locally = True
app_tst.scripts.config.serve_locally = True
layout = go.Layout(
yaxis=dict(title='Count',range=[0, 100],fixedrange=True,side='right',zeroline=False,showgrid=False),
yaxis2=dict(title='percent',range=[0, 1],fixedrange=True,side='left',overlaying='y')
)
data = [go.Scatter(x=[],y=[],name='Data',mode='lines+markers')]
app_tst.layout = html.Div([
dcc.Graph(
id='graphtest',
figure={'data': data, 'layout': layout}
)
])
有了这个工作,我仍然需要回到 dash-core-components==0.21.0
看看这是否真的是个问题。