【发布时间】:2017-10-18 07:28:20
【问题描述】:
我在我的应用程序中使用 chrome 存储,它运行良好。过程非常简单。用户输入电子邮件和密码,应用程序使用 XHR 请求验证他们并使用chrome.storage.local.set 维护会话。设置会话后,我使用chrome.runtime.reload() 重新加载应用程序。每次重新加载时,我都会使用 checkLogin 函数来验证会话是否处于活动状态。它工作正常。但现在我收到了这个错误:
重新加载应用后似乎存储为空,应用在存储中找不到关键字并返回未定义的错误。
这里是用户通过身份验证后调用的代码:
postLogin = function (resultData) {
if (resultData.authStatus == 1) {
chrome.storage.local.set({'userData': resultData}, function(){
console.log("session saved");
});
chrome.runtime.reload()
}
else {
$("#result").html(resultData.authMsg);
$("#result").attr('style', 'display: inline-block !important');
}
return false
}
应用重新加载后,我会检查保存的会话:
checkLogin = function () {
console.log(chrome.storage);
chrome.storage.local.get("userData",function(result) {
userData = result.userData;
if (userData && userData.authStatus == 1) {
console.log("--- user signed In ---")
return true;
}
console.log(" ---- unable to find user session ----")
$("#auth-dialog").attr('style', 'display: inline !important');
return false;
})
}
此时我收到了我在上面的屏幕截图中附加的错误。我还使用console.log(chrome.storage); 来验证存储状态,它返回未定义。
奇怪的是,一旦我手动重新启动应用程序,代码的.get 部分就可以正常工作。起初,它显示错误,我必须重新加载页面才能获取存储的存储值。
清单:
{
...
"permissions": [ "unlimitedStorage", "clipboardRead", "clipboardWrite", "nativeMessaging" , "storage" ],
}
更新:
问题不在于帖子标题中提到的chrome.storage。 chrome.runtime.reload() 的主要问题。初始应用启动后,每当我调用chrome.runtime.reload() 时,应用重新加载从chrome. 开始的任何内容都不起作用。
【问题讨论】:
-
这是一个应用程序,还是一个扩展程序?应该只有一个。请edit您的问题仅包含适当的标签。
-
请edit 成为主题的问题:包括一个minimal reproducible example 重复问题。对于 Chrome 扩展程序或 Firefox WebExtensions,您几乎总是需要包含您的 manifest.json 和一些背景、内容和/或弹出脚本/HTML,通常是网页 HTML/脚本。寻求调试帮助的问题(“为什么我的代码没有按我想要的方式工作?”)必须包括:(1)期望的行为,(2)特定的问题或错误以及(3)重现它所需的最短代码在问题本身中。另请参阅:What topics can I ask about here? 和 How to Ask。
-
请将代码、错误和数据添加为文本 (using code formatting),而不是图像。图片:A)不允许我们复制粘贴代码/错误/数据进行测试; B) 不允许根据代码/错误/数据内容进行搜索;和many more reasons。一般来说,文本格式的代码/错误/数据>>>>作为图像的代码/错误/数据>>没有。只有在除了代码格式的文本之外,如果图像添加了仅由文本代码/错误/数据无法传达的重要内容,则应使用图像。
-
这是一个 chrome 打包的应用程序。我已经删除了扩展标签。用清单的相关部分更新了问题。图片仅用于错误截图,其余为使用代码标签粘贴的应用代码。
-
我已经更新了问题并添加了更多代码,希望能阐明这个过程。
标签: local-storage google-chrome-app