是什么导致我的 writeFile 出现未知编码错误?

What cause the unknown encoding error in my writeFile?

我正在尝试将文件从我的客户端发送到服务器并将其写入目录。

我可以发送文件,但由于这个错误而无法写入:

I20170518-07:09:54.810(2)? Exception while invoking method 'file-upload' Error: Unknown encoding:
I20170518-07:09:54.810(2)? hi i am the content of the file
I20170518-07:09:54.810(2)?     at assertEncoding (fs.js:88:11)
I20170518-07:09:54.811(2)?     at Object.fs.writeFileSync (fs.js:1153:3)
I20170518-07:09:54.811(2)?     at [object Object].fileUpload (server/helpers_docker.js:349:10)
I20170518-07:09:54.811(2)?     at maybeAuditArgumentChecks (packages/ddp-server/livedata_server.js:1711:12)
I20170518-07:09:54.811(2)?     at packages/ddp-server/livedata_server.js:711:19
I20170518-07:09:54.811(2)?     at [object Object]._.extend.withValue (packages/meteor/dynamics_nodejs.js:56:1)
I20170518-07:09:54.811(2)?     at packages/ddp-server/livedata_server.js:709:40
I20170518-07:09:54.812(2)?     at [object Object]._.extend.withValue (packages/meteor/dynamics_nodejs.js:56:1)
I20170518-07:09:54.812(2)?     at packages/ddp-server/livedata_server.js:707:46
I20170518-07:09:54.812(2)?     at Session.method (packages/ddp-server/livedata_server.js:681:23)
I20170518-07:09:54.812(2)?     at packages/ddp-server/livedata_server.js:551:43

所以我知道编码是未知的,但我指定了它。

这是客户:

'change .file-upload-input': function(event, template){
   var func = this;
   var file = event.currentTarget.files[0];
   var reader = new FileReader();
   reader.onload = function(fileLoadEvent) {
      Meteor.call('file-upload', file.name, reader.result);
      console.log(file);
   };
   reader.readAsBinaryString(file);
 },

这是服务器(我在其中指定了编码):

'file-upload': function (fileInfo, fileData) {
      fs.writeFileSync(process.env.HOME + '/compose/area/',fileInfo, fileData,'utf8');
}

任何帮助将不胜感激

根据docswriteFileSync签名是fs.writeFileSync(file, data[, options])。所以你应该改变你的代码:

var data = composeSomehow(fileInfo, fileData);
fs.writeFileSync(process.env.HOME + '/compose/area/', data, 'utf8');

此处 composeSomehow 应将您需要的所有数据与 return data <string> | <Buffer> | <Uint8Array>

之一组合在一起