在我的莫扎特应用程序中,每两次页面加载,我都会收到这个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”}} 占位符 {{/收集}}
似乎我可以通过强制缓存刷新来可靠地重现这一点。
我们如何解决这个问题?这导致我的测试失败,意味着我们无法在客户面前进行测试。
答案 0 :(得分:1)
如果App.start函数创建了一个Layout,然后在其上调用bindRoot(rootElement),则需要:
(a)在 div
之后将App.Start调用移动到或
(b)将整个App.Start调用包装在$(document).ready
中如果布局找不到根元素,渲染引擎会爆炸 - 这会在代码中间歇性地发生,因为在DOM中div可用之前脚本是否运行的竞争条件(转换刷新将导致它一直失败。)
这是一个非常模糊的错误,如果布局无法找到根元素,则会在下一版本的Mozart中添加警告。