1

拡張機能から simplestorage を使用しようとしていますが、ブラウザー セッション間で値を取得できません。これが問題です: 私のメイン コードから、この方法で値を作成しました:

var ss = require("sdk/simple-storage");
ss.storage.foo = [{id:"bar1", properties:{a:"aaa", b:"bbb"}}]
console.log(ss.storage.foo);

これで問題ありません。ログからオブジェクトを確認できました。しかし、ブラウザを閉じて、「foo の定義」(2 行目) をコメントすると、コンソール ログは「undefined」でした。

デフォルトで実行される cfx は、実行するたびに新しいプロファイルを使用することを知っています。そのため、単純なストレージは実行ごとに保持されません。しかし、私は使用しています

cfx -b firefox run --profiledir=$HOME/.mozilla/firefox/nightly.ext-dev

だから私はいつも同じプロファイルを使用していると確信しています。

何が起こっている可能性がありますか?私は何が欠けていますか?どんなアイデアでも大歓迎です!前もって感謝します!

Notidart さんの回答のおかげで、正しく Firefox を閉じるとファイルが保存されることが問題であることがわかりました。コンソールから強制終了しただけでは、データは保持されません。

4

3 に答える 3

0

の使用中に他の誰かがこの質問を見つけた場合に備えて、は から削除されjpmていることに注意してください。そのため、同じプロファイル ディレクトリ (したがって同じシンプル ストレージ データ) を使用するには、プロファイルパスを指すオプションを指定して実行する必要があります-プロファイル名ではありません。--profiledirjpmjpm run--profile

jpm run --profile path/to/profile
于 2015-12-29T20:39:59.943 に答える
0

将来の読者のために、@Noitidart の使用の推奨に代わるものOS.Fileは、低レベル API を使用することです。io/file

を使用してファイルを作成できますfileIO.open(path)。ファイルが存在しない場合は、作成されます。2 番目の引数を含めることで読み書きできますfileIO.open(path, mode)

モードは次のいずれかです。

  • r- 読み取り専用モード
  • w- 書き込み専用モード
  • b- バイナリモード

デフォルトはrです。これを使用して、ファイルの読み取りと書き込みを行うことができます (明らかに、ファイルをProfDフォルダーに入れることはできません。そうしないと、jpm / cfx が実行されるたびに削除されます)。

于 2016-01-22T10:54:39.730 に答える