聚合键关键全局变量未定义。为什么?

时间:2016-06-10 16:40:38

标签: 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 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意味着它不会加载。

我对如何解决此问题感到困惑。有什么想法吗?

3 个答案:

答案 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>
相关问题