【问题标题】:TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode dexie.jsTypeError:在严格模式 dexie.js 上可能无法访问“调用者”、“被调用者”和“参数”属性
【发布时间】:2018-05-16 20:11:29
【问题描述】:

当我调用 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)

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

 checkLoadEnoughtOfflineData(idcheck) {
       return dbOffline.checkPageTable.where("idCheck").equals(idcheck).count();
    }

p/s:我正在使用 Google Chorm 62。

【问题讨论】:

    标签: dexie


    【解决方案1】:

    我假设你在这个位置调试器中断。这是一段故意破坏“严格”模式规则以生成错误的代码,以便可以从产生的错误中选择调用堆栈。如果您可以在调试器设置中忽略此错误类型,则 chromium 调试器将不再让您烦恼。只有在 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();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-23
      • 2020-07-10
      • 1970-01-01
      相关资源
      最近更新 更多