我加载应用程序时出现了一组奇怪的错误
polymer-micro.html:117 Uncaught TypeError: Cannot read property '_makeReady' of undefined
(anonymous function) @ polymer-micro.html:117
第一个中的未定义是Polymer.RenderStatus
polymer.html:3417 Uncaught TypeError: Polymer.dom is not a function
_findStyleHost @ polymer.html:3417
_computeStyleProperties @ polymer.html:3461
_applyCustomProperties @ polymer.html:3652
fn @ polymer.html:3638
显然,Polymer.dom应该是一个功能。为什么不呢?
Uncaught TypeError: Cannot read property '_isEventBogus' of undefined
_notifyListener @ polymer.html:2012
(anonymous function) @ polymer.html:1534
fire @ polymer.html:1277
_notifyChange @ polymer.html:1372
_notifyEffect @ polymer.html:1553
_effectEffects @ polymer.html:1405
_propertySetter @ polymer.html:1389
setter @ polymer.html:1468q
ueryHandler @ iron-media-query.html:116
这是一个媒体查询,每次我们在媒体查询边界移动屏幕宽度时都会生成此错误。在这种情况下,未定义的变量是Polymer.Bind
如果我在polymer.html的顶部放置一个断点(在脚本标记之后)当我放手时,错误消失了。这几乎意味着它通常在没有让Polymer-mini.html加载的情况下运行。
我正在使用chrome运行,而index.html中的测试是否加载webcomponents-lite.js
polyfill意味着它不会加载。
我对如何解决此问题感到困惑。有什么想法吗?
答案 0 :(得分:4)
事实证明,index.html中初始化脚本的定位是导致这些问题的原因。我复制了Polymer Shop应用程序,它将脚本放在正文的底部。在导入my-app元素之前,由polymer-cli工具(带有app-drawer模板)创建的应用程序将脚本放在标题中。
我怀疑商店应用程序没有问题的原因是标题没有做任何动画。我在标题中使用了混合背景效果,这可能就是它失败的原因。
无论如何,将包含Polymer初始化的脚本移动到标题中解决了问题。
答案 1 :(得分:2)
为导入添加异步解决了它。
<link rel="import" href="/src/your-app.html" async>
而不是
<link rel="import" href="/src/your-app.html">
答案 2 :(得分:0)
我正在尝试2.0预览,并尝试跟随Rob Dodson的路由Polycast(#47,48 ish)有类似的错误。这是经过几个小时尝试其他解决方案后的效果:
**<script src="/bower_components/webcomponentsjs/webcomponents-lite.js">**
// Setup Polymer options
window.Polymer = {
dom: 'shadow',
lazyRegister: true
};
// Load webcomponentsjs polyfill if browser does not support native Web Components
(function() {
'use strict';
var onload = function() {
// For native Imports, manually fire WebComponentsReady so user code
// can use the same code path for native and polyfill'd imports.
if (!window.HTMLImports) {
document.dispatchEvent(
new CustomEvent('WebComponentsReady', {bubbles: true})
);
}
};
var webComponentsSupported = (
'registerElement' in document
&& 'import' in document.createElement('link')
&& 'content' in document.createElement('template')
);
if (!webComponentsSupported) {
**// var script = document.createElement('script');
// script.async = true;
// script.src = '/bower_components/webcomponentsjs/webcomponents-lite.min.js';
// script.onload = onload;
// document.head.appendChild(script);**
} else {
onload();
}
})();
// Load pre-caching Service Worker
if ('serviceWorker' in navigator) {
window.addEventListener('load', function() {
navigator.serviceWorker.register('/service-worker.js');
});
}
</script>