TypeError:严格模式dexie.js上可能无法访问“ caller”,“ callee”和“ arguments”属性

Anh*_*Lam 8 dexie

当我调用dexie.js的count()函数时,有人可以告诉我这里发生了什么:

TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them
    at eval (eval at getErrorWithStack (http://127.0.0.1:8081/elements/js/dexie.js:394:5), <anonymous>:1:19)
    at getErrorWithStack (http://127.0.0.1:8081/elements/js/dexie.js:394:5)
    at new Promise (http://127.0.0.1:8081/elements/js/dexie.js:786:29)
    at new Transaction (http://127.0.0.1:8081/elements/js/dexie.js:2756:28)
    at Dexie._createTransaction (http://127.0.0.1:8081/elements/js/dexie.js:1809:16)
    at tempTransaction (http://127.0.0.1:8081/elements/js/dexie.js:1825:28)
    at WriteableTable.getIDBObjectStore (http://127.0.0.1:8081/elements/js/dexie.js:2266:99)
    at WriteableCollection._read (http://127.0.0.1:8081/elements/js/dexie.js:3454:42)
    at WriteableCollection.count (http://127.0.0.1:8081/elements/js/dexie.js:3510:33)
    at HTMLElement.checkLoadEnoughtOfflineData (http://127.0.0.1:8081/elements/base/app-localize-behavior.html:294:73)
Run Code Online (Sandbox Code Playgroud)

上面的最后一行是从我的函数中调用的:

 checkLoadEnoughtOfflineData(idcheck) {
       return dbOffline.checkPageTable.where("idCheck").equals(idcheck).count();
    }
Run Code Online (Sandbox Code Playgroud)

ps:我正在使用Google Chorm 62。

Dav*_*der 6

我假设您是调试器在此位置中断。这是一段代码,有意破坏“严格”模式规则以生成错误,以便可以从产生的错误中提取调用堆栈。如果您可以在调试器设置中忽略此错误类型,那么Chrome调试器将不再烦您。仅当Dexie.debug === true(这是从localhost服务的站点的默认设置)时,才会发生这种情况。您在控制台日志中获得的功能是未处理拒绝的异步堆栈跟踪。您可以通过设置Dexie.debug = false显式关闭它。

来源看起来像这样:

export function getErrorWithStack() {
    "use strict";
    if (NEEDS_THROW_FOR_STACK) try {
        // Doing something naughty in strict mode here to trigger a specific error
        // that can be explicitely ignored in debugger's exception settings.
        // If we'd just throw new Error() here, IE's debugger's exception settings
        // will just consider it as "exception thrown by javascript code" which is
        // something you wouldn't want it to ignore.
        getErrorWithStack.arguments;
        throw new Error(); // Fallback if above line don't throw.
    } catch(e) {
        return e;
    }
    return new Error();
}
Run Code Online (Sandbox Code Playgroud)