繁体   English   中英

Axios POST 在 Node.js 但不是 Electron

[英]Axios POST working in Node.js but not Electron

所以我有一个 package 和一个 function 将文件上传到 Twilio:

const FD = require('form-data');
const axios = require('axios');

   async function createFunctionResource(serviceUid, functionUid, client){

    let collect_file = "Hello World"

    let url = `https://serverless-upload.twilio.com/v1/Services/${serviceUid}/Functions/${functionUid}/Versions`

    let form = new FD();
    collect_file = "test"

    form.append("Path", "collect");
    form.append("Visibility", "public");
    form.append("Content", collect_file, "collect.js");
    form.append("contentType", "application/javascript");

    await axios.post(url, form,  {
    headers: {
        Authorization: 'Basic ' + Buffer.from(`${client.accountSid}:${client.password}`).toString('base64'),
        ...form.getHeaders(),
    },
    })

}

这在 node.js 中完全可以正常工作,并在文件中与消息“Hello World”一起上传。

我正在尝试将其放入 electron 应用程序中,因此我在 preload.js 中预加载此 package 并将 nodeIntegration 设置为 true 但每当我尝试上传文件时,我都会得到:

Request failed with status code 400

错误响应为:

{"message":"No file attached to request","code":70002,"user_error":true,"http_status_code":400,"params":{}}

预加载 package 是否使其行为与 node.js 中的行为完全相同?

你可以在标题部分添加 cotent-type 并检查。

“内容类型”:“应用程序/json”

即使您可以尝试预加载 package 和 axios 希望它在节点环境中运行,但请求是在 XHR(浏览器)下完成的。

要解决此问题,您必须通过添加adapter: require('axios/lib/adapters/http')

    await axios.post(url, form,  {
    headers: {
        Authorization: 'Basic ' + Buffer.from(`${client.accountSid}:${client.password}`).toString('base64'),
        ...form.getHeaders(),
    },
    adapter: require('axios/lib/adapters/http'),
    })
}

你是如何解决这个问题的? 我有一个类似的问题,我的 Axios POST 在节点上工作正常,但由于Content Security Policy directive而在 Electron 上失败,无论我如何设置 connect-src 指令。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM