如何解决间歇性TypeError:' null'莫扎特不是一个对象(评估' this.el.parentNode.replaceChild')?

时间:2013-09-17 05:33:59

标签: mozart-mvc

在我的莫扎特应用程序中,每两次页面加载,我都会收到这个JS错误:

“TypeError:'null'不是对象(评估'this.el.parentNode.replaceChild')            在https://cdn.bigcommerce.com/mozart/0.1.9/mozart.min.js:1            在https://cdn.bigcommerce.com/mozart/0.1.9/mozart.min.js:1            在https://cdn.bigcommerce.com/mozart/0.1.9/mozart.min.js:2            在https://cdn.bigcommerce.com/mozart/0.1.9/mozart.min.js:2            在https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.4.4/underscore-min.js:1

索引页面上的我的应用正文如下:

<body>
  <script type="text/javascript">
    App.start({ rootElement: '#RunwayContainer'});
  </script>
  <div id="RunwayContainer"></div>
</body>

我在我看来所做的一切都很简单

{{#collection“App.PlayListItemView”collectionObserveBinding =“plays”}} 占位符 {{/收集}}

似乎我可以通过强制缓存刷新来可靠地重现这一点。

我们如何解决这个问题?这导致我的测试失败,意味着我们无法在客户面前进行测试。

1 个答案:

答案 0 :(得分:1)

如果App.start函数创建了一个Layout,然后在其上调用bindRoot(rootElement),则需要:

(a)在 div

之后将App.Start调用移动到

(b)将整个App.Start调用包装在$(document).ready

如果布局找不到根元素,渲染引擎会爆炸 - 这会在代码中间歇性地发生,因为在DOM中div可用之前脚本是否运行的竞争条件(转换刷新将导致它一直失败。)

这是一个非常模糊的错误,如果布局无法找到根元素,则会在下一版本的Mozart中添加警告。