TypeError:尝试分配给readonly属性。在iOS8 Safari上

时间:2014-08-07 05:09:13

标签: javascript ios safari

我的网站上的this page您可以在桌面浏览器上正常运行,但在iOS8 Safari上有一个奇怪的错误:

索引模板未显示,控制台中出现错误:

TypeError:尝试分配给readonly属性。

它指向以下行:

}), e("rsvp/promise/all", ["../utils", "exports"], function(e, t) {
    "use strict";
    var r = e.isArray, n = e.isNonThenable;
    t["default"] = function(e, t) {
        var i = this;
        return new i(function(t, a) {
            function o(e) {
                return function(r) {
                    c[e] = r, 0===--u && t(c)
                }
            }
            function s(e) {
                u = 0, a(e)
            }
            if (!r(e))
                throw new TypeError("You must pass an array to all.");
            var l, u = e.length, c = new Array(u);
            if (0 === u) // This is the line with error
                return void t(c);
            for (var h = 0; h < e.length; h++)
                l = e[h], n(l) ? (c[h] = l, 0===--u && t(c)) : i.cast(l).then(o(h), s)
        }, t)
    }
}), e("rsvp/promise/cast", ["exports"], function(e) {
    "use strict";

对于移动游猎而言,这是一个众所周知的错误,有没有解决?

2 个答案:

答案 0 :(得分:8)

RSVP的维护者,抱歉您遇到了这个问题。

首先,您似乎使用的是较旧版本的RSVP。我建议升级。

不幸的是,这个问题可能与https://github.com/emberjs/ember.js/pull/5629 出现有关,只是因为运行iOS 8的非64位设备的JSC在使用严格& #39;模式。在我的观察中,它只发生在特定的情况下,然后才会在有问题的代码得到优化时发生。

我再也不确定升级是否会对您有所帮助,但无论如何都应该考虑它。此外,如果问题仍然存在,则删除所有use strict语句可能是最佳选择。

如果很快没有出现解决方案,我可能会发布RSVP更新,并删除use strict语句。

答案 1 :(得分:3)

您是否尝试从代码中删除所有"use strict";?根据我的理解,它似乎只发生在3代iPad上。