【问题标题】:Chrome local storage deleting after NWJS application closes on Windows在 Windows 上关闭 NWJS 应用程序后删除 Chrome 本地存储
【发布时间】:2016-02-26 02:49:48
【问题描述】:

我有一个应用程序,它使用 Chrome 本地存储在用户的电脑上保存一些信息。

此应用程序在 OS X 和 Linux (Ubuntu) 上运行良好,但是在 Windows 8.1 上进行测试时,我打开了应用程序的本地存储文件夹。有 2 个文件名为:

chrome-extension_nbcogalgoagjhkbkpjfkfcckdmochgmi_0.localstorage
chrome-extension_nbcogalgoagjhkbkpjfkfcckdmochgmi_0.localstorage-journal

关闭应用后,我在文件夹中看到两个文件都被删除了!

之后我再次打开应用程序,发现现在它创建了这个文件:

chrome-extension_cobbbbdapgeflbdpmchapmffabihofip_0.localstorage
chrome-extension_cobbbbdapgeflbdpmchapmffabihofip_0.localstorage-journal

在关闭应用程序后再次被删除。

我正在使用 NWJS SDK 13 alpha 版本 3,因为我们也在使用 Chrome Serial。

这是仅在 Windows 中发生的问题,尚未在其他版本的 Windows 上进行测试,但至少在 Windows 8.1 上是这样,当我检查 OS X 和 Ubuntu 上的本地存储文件夹时,文件没有被删除.

我在管理员模式下执行它。

我还注意到它在关闭应用程序后并没有删除,而是在再次打开后才删除。

不确定我应该发布哪些文件的代码,所以我会发布我认为可能有帮助的内容。我没有太多用 JS 编程,也没有用 NWJS。可能我做错了什么,因为我不知道什么可能有用或没有什么我对制作 MCVE 没有信心......

Manifest.json

{
  "manifest_version": 2,
  "name": "Hello World",
  "version": "2.1",
  "minimum_chrome_version": "23",
  "icons": {
    "16": "assets/images/16x16.png"
  },
  "app": {
    "background": {
      "scripts": ["main.js"]
    }
  },
  "permissions": ["serial"]
}

包.json:

{
    "main": "main.html",
    "name": "PAGUSS",
    "description": "Paguss Payment Services",
    "version": "0.1.0",
    "keywords": [ "paguss", "payment" ],
    "window": {
        "title": "Paguss",
        "transparent": true,
        "icon": "assets/images/64x64.png",
        "toolbar": false,
        "frame": true,
        "resizable": true,
        "position": "mouse",
        "min_width": 400,
        "min_height": 500,
        "max_width": 1200,
        "max_height": 800,
        "no-edit-menu": false
    },
    "webkit": {
        "plugin": false
    }
}

调用 login.js 时执行的第一个函数:

function recoverBusinessConf(){

    var obj = {
        "id": "1",
        "saleExecutorFlow" : "[{\"callback\": \"validateTransactionData\"},{\"callback\": \"getTid\"},{\"callback\": \"fillTransactionData\"},{\"callback\": \"parseJsonToXML\"},{\"callback\": \"sendRequest\"},{\"callback\": \"processResponse\"},{\"callback\": \"endTransaction\"},{\"callback\": \"printVoucher\"},{\"callback\": \"updateLastRecordNumber\"},{\"callback\": \"sendTransactionToPagussServer\"}]",
        "name": "SOFIA IS",
        "rfc": "SIS141707UPT",
        "address": {
            "street": "CASTILLA 136",
            "cologne": "ALAMOS",
            "city": "BENITO JUÁREZ",
            "country": "MÉXICO",
            "postalCode": "03020",
            "latitude": "",
            "longitude": "",
            "zone": "DISTRITO FEDERAL"
        },
        "additionalData": {
            "reference": false,
            "waiter": false,
            "turn": false,
            "room": false
        },
        "product": {
            "id": "1",
            "type": "RETAIL",
            "operatives": {
                "sale": {
                    "menu-link": "",
                    "title": "Venta",
                    "voucher": "",
                    "elavonMessage": "{\"Request\": {\"_id\":\"Credit Card.Sale\",\"Version\":\"4018\",\"Block\":[{\"_id\":\"HD\",\"Network_Status_Byte\":\"*\",\"Transaction_Code\":\"000\",\"Application_ID\":\"${vendorId}\",\"Terminal_ID\":\"${affiliationAndTid}\",\"Device_Tag\":\"${serialNumber}\"},{\"_id\":\"01\",\"POS_Entry_Capability\":\"04\",\"Account_Entry_Mode\":\"${accountEntryMode}\",\"Partial_Auth_Indicator\":\"0\",\"Account_Data\":\"${track02}\",\"Transaction_Amount\":\"${elavonFormattedAmount}\",\"Last_Record_Number\":\"${lastRecordNumber}\"},{\"_id\":\"03\",\"Merchant_Reference_Nbr\":\"${merchantReferenceNumber}\"},{\"_id\":\"16\",\"ICC_Cryptogram\":\"${_9F26}\",\"ICC_CID\":\"${_9F27}\",\"ICC_AED\":\"000000\",\"ICC_Unpredictable_Number\":\"${_9F37}\",\"ICC_ATC\":\"${_9F36}\",\"ICC_TVR\":\"${_95}\",\"ICC_TT\":\"${_9C}\",\"ICC_AIP\":\"${_82}\",\"ICC_TCP\":\"${_9F33}\",\"ICC_CVMR\":\"${_9F34}\",\"ICC_TTD\":\"${_9A}\",\"ICC_Transaction_Currency\":\"${_5F2A}\",\"ICC_Authorized_Amount\":\"${_9F02}\",\"ICC_Other_Amount\":\"${_9F03}\",\"ICC_Terminal_Type\":\"${_9F35}\",\"ICC_CSN\":\"${_5F34}\",\"ICC_IAD\":\"${_9F10}\"}]}}",
                    "voucher": ["A@logo1 Santader @br @cnn VENTA @br @cnn (_affiliation_number_) _business_name_ @cnn _address_street_ @cnn _address_cologne_, _address_city_ @cnn _address_zone_ @br @lnn No.Tarjeta: _ccnumber_ @br @lnn _ccvendor_ @br @lnn APROBADA @lnn IMPORTE @cnn $ _amount_ _currency_ @br @lnn Oper.: _id_  @lnn Ref.: _reference_ @lnn ARQC: _arqc_ @lnn AID: _aid_ @lnn Aut.: _auth_ @br @lnn Fecha: _date_ _time_ @br @cnn ME OBLIGO EN LOS TERMINOS DADOS AL REVERSO DE ESTE DOCUMENTO @br @br @br @br @cnn ______________________________ @cnn _ccname_ @bc _id_ @br @br @br @br @br @br @br",
                                "A@logo1 Santader @br @cnn VENTA @br @cnn (_affiliation_number_) _business_name_ @cnn _address_street_ @cnn _address_cologne_, _address_city_ @cnn _address_zone_ @br @lnn No.Tarjeta: _ccnumber_ @br @lnn _ccvendor_ @br @cnn C-L-I-E-N-T-E @br @lnn APROBADA @lnn IMPORTE @cnn $ _amount_ _currency_ @br @lnn Oper.: _id_  @lnn Ref.: _reference_ @lnn ARQC: _arqc_ @lnn AID: _aid_ @lnn Aut.: _auth_ @br @lnn Fecha: _date_ _time_ @br @cnn ME OBLIGO EN LOS TERMINOS DADOS AL REVERSO DE ESTE DOCUMENTO @br @br @br @br @cnn ______________________________ @cnn _ccname_ @bc _id_ @br @br @br @br @br @br @br"]
                }
            }
        },
        "installer": {
        },
        "keyAccountManager": {
        },
        "affiliation": [{
            "affiliation": "7749517",
            "lastRecordNumber": 0,
            "device": {
                "serie": "",
                "model": "",
                "version": "",
                "tids": ["001"]
            },
            "paymentModes": [{
                "type": "C",
                "text": "Contado",
                "max": 1000.0,
                "min": 10.0,
                "active": true,
                "iniDate": "01/11/2015 9:00",
                "endDate": "01/12/2015 9:00"
            }],
            "currency": "MXN"
        }],
        "users": [{
            "id": "1",
            "name": "Ricardo",
            "active": true,
            "lastName": "Vargas",
            "mothersName": "Flores",
            "mail": "fjbleal@gmail.com",
            "masterPin": "3579"
        }]
    };

    chrome.storage.local.set({'business': obj},function(items){
        window.location.href = '/view/index.html'
    });
}

【问题讨论】:

    标签: javascript local-storage google-chrome-app node-webkit


    【解决方案1】:

    今天在 Google 群组发布了 NWJS 的 alpha 6 版本,您可以查看它here。此错误实际上已通过此更新解决:

    变化(从 nw12 移植的功能)

    • nwjc:将JS编译成机器码保护源代码
    • nw.Tray 修复
    • “单实例”支持(仅“真”)
    • 清单中的“用户代理”
    • 清单中的“dom_storage_quota”和“additional_trust_anchors”
    • 修复“child_process.fork”
    • 修复:无法在某些 Linux 发行版中启动
    • nw.App 方法:argv、clearCache、setProxyConfig、addOriginAccessWhitelistEntry、removeOriginAccessWhitelistEntry、part 'open' 事件
    • 支持在应用启动时迁移本地存储数据文件
    • nw-gyp 更新到 0.13.0:修复原生模块构建支持

    所以,这是我使用的 alpha 版本的一个错误,今天已解决。

    【讨论】:

      【解决方案2】:

      Chrome 应用设置(至少在 Windows 上)存储在 Chrome 用户配置文件中的 Local App Settings\****app-id****\Sync App Settings\****app-id****\ 中,而不是存储在 .localstorage 文件中,该文件可能只是为了兼容性而临时创建的原因。

      【讨论】:

      • 好吧,但是,如果本地存储在 Linux 和 OS X 上运行良好,为什么不只在 Windows 上保存任何东西?你需要更多的信息?什么样的代码,我去找找
      • 它在 Windows 上运行良好。为什么你认为没有?
      • 我的应用程序检查是否有一些数据存储在 Chrome 本地存储中(这是一个基于 NWJS 的应用程序),如果没有,那么它会要求用户输入一个 ID 和一个密钥(想象一下用户和密码) 和其他一些配置。如果他们关闭/注销应用程序,一旦他们完成了配置,他们应该能够看到一个登录屏幕(在 Linux 和 OS X 上运行良好)但在 Windows 上它只是让我返回到“注册屏幕”而不是“登录屏幕”。
      • 这是我看到上述问题的路线,评论为C:\Users\Jesus\AppData\Local\Paguss\User Data\Default\Local Storage,其中Paguss 是应用名称...
      • 你太复杂了,甚至不需要看内部文件结构。显示您用于读取和写入值的代码,以及 manifest.json(顺便说一句,缺少 "storage" 权限)——这就是问题所需要的全部内容。
      猜你喜欢
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      • 2012-04-25
      • 1970-01-01
      • 1970-01-01
      • 2013-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多