【问题标题】:Axios: data should be a string, Buffer or Uint8Arrayaxios:数据应该是字符串,Buffer或者Uint8Array
【发布时间】:2021-01-04 09:03:28
【问题描述】:

我在尝试使用 axios 执行 POST 请求时收到此错误:

TypeError: data should be a string, Buffer or Uint8Array

这是我的代码 sn-p:

var fs = require('fs'),
axios = require('axios');

var FormData = require('form-data');
var form = new FormData();
form.append('file', fs.createReadStream("qa_test_file_DOC.txlf"));
form.append('extractArchive', false);


let request_config = {
    headers: {
    'Authorization': `Bearer eyJhbGciOiJIUzI1NXXXX.....`,
    ...form.getHeaders()
 }
}

let reqUrl = "https://XXXXX/XX/rest/v1/XXXXX";
try {
    axios.post(reqUrl, form, request_config)
        .then(function (response) {
        console.log(response);
        return callback(response);
     })
    .catch(function (error) {
        console.log(error);
        return callback(error);
    });
} catch (ex) {
  console.log("exception   ", ex);
}

尝试使用管道和大多数可能的解决方案。文件存在。不明白这里出了什么问题。 Readstream 中的任何内容? 感谢您的帮助。

【问题讨论】:

  • 你在使用 TypeScript 吗?如果没有,你真的应该 - 在没有类型注释的情况下编写非平凡的应用程序代码确实是不可能的。
  • 您确定您的目标端点支持multipart/form-data 请求而不是直接将文件放入请求正文中吗? (因为 RESTful Web 服务接受 multipart/form-data 正文中的数据并不常见)。

标签: javascript node.js axios fs


【解决方案1】:

在花了很多时间并尝试了很多可能的事情之后,我发现我得到的错误是。

TypeError: data should be a string, Buffer or Uint8Array

在我的 formData 中,我在文件中追加了一个变量

form.append('extractArchive', false);

这不过是布尔值,而 axios 或 formData 对此给出了错误。 我把它改成了,

form.append('extractArchive', 'false');

这解决了我的问题。如果有人跑步有这样的问题,可能会有所帮助。

感谢您的帮助。

【讨论】:

    【解决方案2】:

    这一行:

    axios.post(reqUrl, form, request_config)
    

    您在 form 参数中传递了一个 FormData 对象。 Axios(在 NodeJS 中使用时)需要 stringBufferUint8Array

    在浏览器中使用 Axios 时,它只包装 fetch,从而允许直接使用 FormData),但是在 NodeJS 中使用时,您需要序列化自己的请求正文(并序列化为 multipart/form-data 可以是痛苦,由于Boundary 字段等)。

    假设您实际上想要发出multipart/form-data 请求,那么:

    【讨论】:

    • 嗨,Github 问题:github.com/axios/axios/issues/789 它说没有原生支持。仅限浏览器:FormData、File、Blob // - 仅限节点:流数据:{ firstName: 'Fred' },我正在从 Node.js 服务尝试。
    • @PravinBhapkar 怎么样?
    猜你喜欢
    • 2022-07-13
    • 2019-11-10
    • 2022-10-15
    • 1970-01-01
    • 1970-01-01
    • 2018-04-24
    • 2021-03-16
    • 2015-12-24
    • 1970-01-01
    相关资源
    最近更新 更多