Polymer 聚合物关键全局变量未定义。为什么?
我在加载应用程序时遇到了一组奇怪的错误Polymer 聚合物关键全局变量未定义。为什么?,polymer,Polymer,我在加载应用程序时遇到了一组奇怪的错误 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 f
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的测试意味着它不会加载
我一直在思考如何调试这个问题。有什么想法吗?事实证明,初始化脚本在index.html中的位置是导致这些问题的原因。我复制了Polymer Shop应用程序,该应用程序将脚本放在身体底部。在导入my app元素之前,由polymer cli工具创建的应用程序(使用应用程序抽屉模板)将脚本放置在标题中 我怀疑商店应用程序没有问题的原因是标题没有做任何动画。我在标题中使用了混合背景效果,这可能就是它失败的原因
无论如何,将包含聚合物初始化的脚本移动到标题中解决了问题。将异步添加到导入中为我解决了这个问题
<link rel="import" href="/src/your-app.html" async>
而不是
<link rel="import" href="/src/your-app.html">
我正在试验2.0预览版,在尝试遵循Rob Dodson的路由多播(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>
****
//设置聚合物选项
窗口聚合物={
dom:“影子”,
懒汉:没错
};
//如果浏览器不支持本机Web组件,请加载webcomponentsjs polyfill
(功能(){
"严格使用",;
var onload=函数(){
//对于本机导入,手动激发WebComponentsReady so用户代码
//可以为本机导入和多填充导入使用相同的代码路径。
如果(!window.HTMLImports){
document.dispatchEvent(
新的CustomEvent('WebComponentsReady',{bubbles:true})
);
}
};
var webComponentsSupported=(
文档中的“registerElement”
&&document.createElement(“链接”)中的“导入”
&&document.createElement(“模板”)中的“内容”
);
如果(!WebComponents受支持){
**//var script=document.createElement('script');
//script.async=true;
//script.src='/bower_components/webcomponentsjs/webcomponents lite.min.js';
//script.onload=onload;
//document.head.appendChild(脚本)**
}否则{
onload();
}
})();
//加载预缓存服务工作者
if(导航器中的“serviceWorker”){
addEventListener('load',function()){
register('/service-worker.js');
});
}
Adam的编辑修复了格式设置。没有必要将其还原。