[英]firefox addon: how to debug simple-storage using addon builder
我正在使用在線Firefox Addon Builder( https://builder.addons.mozilla.org )來開發我的插件,而我在使用簡單存儲時遇到了一些問題。 對於下面的代碼,我在控制台上獲得相同的信息,每次運行它(使用插件構建器上的“test”選項),即,似乎沒有存儲該值:
var ss = require("sdk/simple-storage");
console.log("BEFORE INIT");
console.log(JSON.stringify(ss.storage));
if (!ss.storage.pages)
ss.storage.pages = [];
console.log("AFTER INIT");
console.log(JSON.stringify(ss.storage));
安慰:
[14:32:38.892] info: xxx: BEFORE INIT
[14:32:38.893] info: xxx: {}
[14:32:38.893] info: xxx: AFTER INIT
[14:32:38.893] info: xxx: {"pages":[]}
我假設發生這種情況是因為每次運行測試時,插件構建器都會創建一個新的測試包,並且存儲對於插件是私有的(顯然對於同一個插件中的每個測試包):
[14:31:36.165] "installing from /xpi/test/2d6e6appf76kg/"
...
[14:32:36.378] "installing from /xpi/test/2d6e6appf7r40/"
我嘗試重新啟動Firefox,然后它似乎工作(在控制台上顯示我正確的事情)。 如何在不必重新啟動firefox的情況下調試我的代碼?
其根源是SDK的預期行為和builder-addon操作方式的混合。
有幾種解決方法可以保存簡單存儲數據
--profiledir=PROFILEDIR
的純SDK simple-storage
模塊。 與LocalStorage一樣,它本質上是同步的,在主線程上執行同步I / O,這實際上會損害性能。 如果您只有一些短值,請使用首選項,例如通過simple-prefs
模塊。 如果你有很多數據,最好使用像OS.File
這樣的OS.File
。 如果您需要某些關系,請考慮使用indexed-db
或SQLite.jsm
。 對於OS.File
和/或SQLite.jsm
,您將需要chrome訪問權限 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.