ああ、あなたはSDKを使用しています。他の質問の実際のエラーを読み直すと収集します。
TextEncoder
SDK モジュールにはクラスがないため、他のモジュールから明示的にインポートする必要があります。
yield
OS.File.openが必要です。
append:
Firefox 27 以降でのみサポートされています
.flush()
は Firefox 27+ でのみサポートされています (とにかく悪い考えです)。.writeAtomic
必要な場合に使用します。
write: true
ファイルに書き込みます。
これは、私が Firefox 25 でテストした完全に機能する例です ( main.js
)
const {Cu} = require("chrome");
// It is important to load TextEncoder like this using Cu.import()
// You cannot load it by just |Cu.import("resource://gre/modules/osfile.jsm");|
const {TextEncoder, OS} = Cu.import("resource://gre/modules/osfile.jsm", {});
const {Task} = Cu.import("resource://gre/modules/Task.jsm", {});
function write_text(filename, text) {
var encoder = new TextEncoder();
var data = encoder.encode(text);
filename = OS.Path.join(OS.Constants.Path.tmpDir, filename);
Task.spawn(function() {
let file = yield OS.File.open(filename, {write: true});
yield file.write(data);
yield file.close();
console.log("written to", filename);
}).then(null, function(e) console.error(e));
}
write_text("foo", "some text");