Chrome NWJS 应用程序在 Windows 关闭后删除本地存储

Chrome local storage deleting after NWJS application closes on Windows

我有一个应用程序使用 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 上的存储文件夹,文件没有被删除。

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

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

不确定我应该 post 哪些文件的代码,所以我会 post 我认为可能有帮助的。我没有用 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"]
}

Package.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'
    });
}

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

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

Changes (features ported from nw12)

  • nwjc: compile JS to machine code for source code protection
  • nw.Tray fix
  • 'single-instance' support ('true' only)
  • 'user-agent' in manifest
  • 'dom_storage_quota' and 'additional_trust_anchors' in manifest
  • Fix 'child_process.fork'
  • Fix: unable to launch in some Linux distributions
  • nw.App methods: argv, clearCache, setProxyConfig, addOriginAccessWhitelistEntry, removeOriginAccessWhitelistEntry, part of 'open' event
  • support migrating localstorage data file on app start
  • nw-gyp updated to 0.13.0: Fix native module build support

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