5 javascript firefox-addon firefox-addon-sdk
我正在 Linux 上的 Firefox - 24 中编写一个简单的插件。我收到错误:
ReferenceError: TextEncoder is not defined
Run Code Online (Sandbox Code Playgroud)
当我这样做时: 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();
});
}
Run Code Online (Sandbox Code Playgroud)
小智 61
如果您在运行节点服务器时遇到此错误
找到该文件node_modules/whatwg-url/dist/encoding.js
或.../lib/encoding.js
在顶部添加这一行const { TextEncoder, TextDecoder } = require("util");
Dea*_*ada 18
如果您因为使用 Mongodb via 而遇到这种情况,npm install mongodb
那么最简单的方法就是升级您的 Node 版本。需要高于12版本;我使用了版本 16,它清楚地解决了我的问题
Die*_*epa 15
在 nodejs 中,您可以使用 util 解决:
var util= require('util');
var encoder = new util.TextEncoder('utf-8');
Run Code Online (Sandbox Code Playgroud)
Sah*_*mar 14
此问题仅出现在节点 10 或更低版本中。解决这个问题upgrade node version to 12 or higher
然后rm -rf node_modules && npm i
或者如果您不想升级节点版本,那么,
找到这个文件
node_modules/whatwg-url/dist/encoding.js // If dist folder
node_modules/whatwg-url/lib/encoding.js // If lib folder
Run Code Online (Sandbox Code Playgroud)
并在encoding.js文件中添加这一行
const { TextEncoder, TextDecoder } = require("./utils"); // if utils file
const { TextEncoder, TextDecoder } = require("./util"); // if util file
Run Code Online (Sandbox Code Playgroud)
啊,你正在使用 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");
Run Code Online (Sandbox Code Playgroud)
小智 5
我也遇到了这个错误,所以我用这种方式解决了它,在nodejs项目中转到node_modules/whatwg-url/dist/encoding.js文件中添加此行=>
const {TextDecoder, TextEncoder} = require("util");
Run Code Online (Sandbox Code Playgroud)
你的问题已经解决了
归档时间: |
|
查看次数: |
20975 次 |
最近记录: |