我正在Linux上用Firefox编写一个简单的插件--24。 我收到错误:
ReferenceError: TextEncoder is not defined
当我这样做时:var encoder = new TextEncoder(); 我正在使用的功能是:
function write_text(filename, text) {
var encoder = new TextEncoder();
var data = encoder.encode(text);
Task.spawn(function() {
let pfh = OS.File.open("/tmp/foo", {append: true});
yield pfh.write(text);
yield pfh.flush();
yield pfh.close();
});
}
答案 0 :(得分:3)
啊,您正在使用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");
答案 1 :(得分:0)
可以在TextEncoder
模块中找到sdk/io/buffer
:
let { TextEncoder, TextDecoder } = require('sdk/io/buffer')
答案 2 :(得分:0)
在nodejs中,您可以使用util来解决:
var util= require('util');
var encoder = new util.TextEncoder('utf-8');