1

几个月来,我一直在用微风和 WebAPI(从 John Papa 的示例开始)构建一个 SPA。几天前,在我的 Windows 8 VS2012 内部 IE 浏览器上,开始在微风.debug.js 中出现 javascript 错误。

JavaScript critical error at line 4663, column 13 in //http://localhost:50033/Script/breeze.debug.js

SCRIPT1028: Expected identifier, string or number

我回到我的另一台开发机器,带有 VS2012 的 Windows 7,它没有给出错误。两台机器之间的代码是相同的。我使用 Azure TFS 来同步代码。

错误发生在结束时 });

        function convertFromODataEntityType(odataEntityType, schema, metadataStore, serviceName) {
        var shortName = odataEntityType.name;
        var namespace = translateNamespace(schema, schema.namespace);
        var entityType = new EntityType({
            shortName: shortName,
            namespace: namespace, 
        });                          <==== line 4663

当我删除命名空间后的逗号时,错误消失了,但在第 6911 行的另一个位置再次出现错误。

        day:         { fn: function(source) { return source.day;}, dataType: "Number" },
        month:       { fn: function(source) { return source.month; }, dataType: "Number" },
        year:        { fn: function(source) { return source.year; }, dataType: "Number"},
    };             <========= line 6911

删除上面一行的逗号,它在第 1271 行出错

Unhandled exception at line 1271, column 17 in http://localhost:50033/Scripts/breeze.debug.js

0x800a01b6 - JavaScript runtime error: Object doesn't support property or method 'some'

在这段代码中:

function compile(self) {
    if (!self._compiledFn) {
        // clear off last one if null 
        if (self._fns[self._fns.length - 1] == null) {
            self._fns.pop();
        }
        if (self._fns.length === 0) {
            return undefined;
        }
        self._compiledFn = function (that, v) {
            return that._fns.some(function (fn) {
                return fn(that, v);
            });
        };
    };
    return self._compiledFn;
}

有没有其他人看到过这种行为?

4

2 回答 2

3

只是一个猜测,但请检查您是否没有在“兼容性”模式下运行 IE。'some' 方法是 ES5 标准的一部分,在 'compatability' 模式下不可用。

为避免 IE 浏览器出现兼容模式问题,我们强烈建议您在 HTML 标头中添加以下内容:

<meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1"/>
于 2013-01-06T00:33:45.173 回答
3

我也遇到过。事实上,我经常对自己这样做,尤其是在开发过程中删除或重新排序最后一个 k/v 对时。

虽然 IE10 和其他浏览器更宽容,但我们应该消除我们的 hashmap 对象键/值列表中的尾随逗号......并且会这样做。

FWIW,下面的正则表达式找到了它们

,(\s*)\}\)

并且以下正则表达式替换模式修复了它们(保留空格):

$1\}\)
于 2013-01-06T19:59:13.103 回答