gpt4 book ai didi

javascript - ReactJS、Redux 和 DexieJS (IndexedDB) - 隐身模式和 Chrome v69 中的错误

转载 作者:行者123 更新时间:2023-11-30 06:21:27 25 4
gpt4 key购买 nike

我目前正在学习 ReactJS,我决定创建一个简单的应用程序。

堆栈是:

  • react
  • 终极版
  • react 路由器
  • DexieJS(索引数据库)

应用程序正在运行。问题是,当我尝试在 Firefox 或隐身模式(在 Chrome 中)上测试它时,出现此错误:


类型错误:无法读取未定义的属性“应用”
enter image description here

任何人都知道为什么我会收到此错误以及我该如何处理?我发现 IndexedDB 在 Firefox 和 incognito 模式下不可用,所以我尝试做一个简单的检查:

if(!window.indexedDB) {
alert('Indexed DB is not supported by your browser. If you are running in incognito mode, please use the normal mode.')
}

但这不起作用,我再次收到错误。

如果你想查看完整代码,这里是 Github 仓库: https://github.com/Webd01/BM

感谢您的帮助!

最佳答案

IndexedDB 在 Chrome 隐身模式下运行良好,所以如果你在那里遇到问题,可能是我的其他原因造成的。

但是你说的 IndexedDB 在 Firefox 隐私浏览模式下不好,你是对的,尽管你错了。 window.indexedDB 在 Firefox 隐私浏览模式下不为空,但它确实会给你一个关于 upgradeneeded 的错误。我用这样的东西来检测它(这也有一些其他浏览器兼容性检查):

var checkIDB = function () {
if (typeof window.indexedDB === "undefined") {
console.log("IndexedDB not supported at all!");
return;
}

try {
keyRange.only([1]);
} catch (e) {
console.log("Buggy Microsoft IndexedDB implementation");
return;
}

var openRequest = window.indexedDB.open('firefox-private-test', 1);

openRequest.onerror = function (evt) {
console.error(evt.target.error);
if (evt.target.error.message.includes("aborted")) {
console.log("Some other error, maybe quota related:");
console.log(evt.target.error);
} else {
console.log("Firefox private mode, probably:");
console.log(evt.target.error);
}
}

openRequest.onupgradeneeded = function (evt) {
var db = evt.target.result;
var one = db.createObjectStore('one', {
autoIncrement: true,
keyPath: 'key'
});
one.createIndex('one', 'one');
one.add({one: 1});
var two = db.createObjectStore('two', {
autoIncrement: true,
keyPath: 'key'
});
two.createIndex ('two', 'two');
two.add({two: 2});
};

openRequest.onsuccess = function (evt) {
var db = evt.target.result;
var transaction;
try {
transaction = db.transaction(['one', 'two'], 'readwrite');
} catch (e) {
console.log("Some browser failed here, maybe an old version of Safari, I forget");
console.log(e.target.error);
return;
}

var count = 0;
transaction.objectStore('one').index('one').openCursor().onsuccess = function (evt) {
cursor = evt.target.result;
if (cursor) {
count += 1;
cursor.continue();
}
};

transaction.oncomplete = function () {
db.close();
if (count === 1) {
console.log("All good!");
} else {
console.log("Buggy Safari 10 IndexedDB implementation")
}
};
};
};

关于javascript - ReactJS、Redux 和 DexieJS (IndexedDB) - 隐身模式和 Chrome v69 中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52803941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com