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 版本的一个错误,今天已经解决了。
我有一个应用程序使用 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 版本的一个错误,今天已经解决了。