2016-06-10 83 views
2

为我打开了我的申请未定义聚合物关键全局变量。为什么?

polymer-micro.html:117 Uncaught TypeError: Cannot read property '_makeReady' of undefined 
    (anonymous function) @ polymer-micro.html:117 

在这第一个的indefined我有一个奇怪的一系列的错误是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的顶部放置一个断点(在脚本标签后面),然后当我放弃它时错误消失。这几乎意味着它通常不会让聚合物mini.html加载。

我使用chrome运行,并且index.html中的测试是否加载webcomponents-lite.js填充表示它不加载。

我被困在关于如何调试此问题。有任何想法吗?

+0

Adam的编辑修改了格式。没有必要恢复它。 – Matt

回答

4

事实证明,初始化脚本在index.html中的定位是导致这些问题的原因。我已经复制了聚合物商店应用程序,该应用程序将脚本放置在主体的底部。在导入my-app元素之前,由聚合物cli工具创建的应用程序(使用应用程序抽屉模板)将脚本放置在标题中。

我怀疑店铺应用程序没有问题的原因是标题没有做任何动画。我在头文件中使用混合背景效果,这可能是它失败的原因。

无论如何,将包含聚合物初始化的脚本移动到标题解决了问题。

2

将异步添加到导入为我解决了它。

<link rel="import" href="/src/your-app.html" async> 

而不是

<link rel="import" href="/src/your-app.html"> 
0

我用2.0预览实验和有类似的一组试图跟随罗布多德森的路由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>