Breezejs-IE8上的元数据导入错误



我已经使用Breezejs运行了几个月的项目,直到我更新到最新版本("1.4.5"),元数据导入停止在IE8上工作时,一切都很好。

我以前使用的是"1.3.6"版本,它在IE8中运行良好(我根据建议添加了es5垫片和json2库,以支持"遗留"浏览器)。

然而,由于我升级到了最新版本,当初始化新的实体管理器并发出第一个查询时,它返回以下错误:

    Unable to either parse or import metadata: [Object expected]

ctor.protype.fetchMetadata方法中。

追踪到这个问题,我了解到它无法在客户端上运行getES5PropDescriptor方法为使用自定义构造函数扩展的实体添加属性(如Breeze文档中所述):

function getES5PropDescriptor(proto, propName) {
    if (proto.hasOwnProperty(propName)) {
        //next line throws the error!!!
        return Object.getOwnPropertyDescriptor && Object.getOwnPropertyDescriptor(proto, propName);
    } else {
        var nextProto = Object.getPrototypeOf(proto);
        return nextProto ? getES5PropDescriptor(nextProto, propName) : null;
    }
}

这是Breezejs已知的问题吗?有什么关于如何在最新Breezejs版本的IE8上再次运行的提示吗?

我也尝试过这篇文章中的建议(基本上是注释掉了isolateES5Props方法的调用),但没有用。

非常感谢您的宝贵支持!

更新:

此问题已在微风1.4.7中得到修复,现在可用。

上一篇:

这是一个bug。它将在下一个版本中修复。今天晚些时候还将在GitHub中检查一个修复程序(只需提取bread.xxx.js文件)。现在,您可以通过添加以下函数来修改bread.debug.js。

function canIsolateES5Props() {
    try {
        return Object.getPrototypeOf && Object.defineProperty({}, 'x', {});
    } catch (e) {
        return false;
    }
}

并在getES5PropDescriptor函数的顶部调用它。

function getES5PropDescriptor(proto, propName) {
    if (!canIsolateES5Props()) return null;
    ...
    // code from above
}

相关内容

最新更新