使用托管文件将 cURL 卷曲到带有 Axios 的 NodeJS

cURL into NodeJS with Axios using hosted file

我正在尝试将此 cURL 命令转换为带有 AXIOS 的请求

`curl -X POST "https://serverless-upload.twilio.com/v1/Services/${service_uid}/Functions/${function_uid}/Versions" \
    -F "Content=@./template_scripts/collect.js; type=application/javascript" \
    -F "Path=collect.js" \
    -F "Visibility=public" \
    -u "${client.accountSid}:${client.password}"`

我的尝试是这样的:

    collect_file = ""
    await axios.get("https://pastebin.com/raw/RFYs4n2p").then((r) =>  collect_file = r.data)

    url = `https://serverless-upload.twilio.com/v1/Services/${service_uid}/Functions/${function_uid}/Versions`

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

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

在填写“内容”参数时,我使用的是托管在 Pastebin 上的 JS 文件的文本表示形式。在您看到的初始 cURL 命令中,我指定了文件 ./template_scripts/collect.js 我不想使用 fs 加载“collect.js”文件,因为我希望代码不使用文件系统。

我得到的错误是

Error: Request failed with status code 400
{
  message: 'Invalid function version content.',
  code: 20001,
  user_error: true,
  http_status_code: 400,
  params: {}
}
400
{
  date: 'Wed, 10 Feb 2021 13:39:08 GMT',
  'content-type': 'application/json',
  'content-length': '113',
  connection: 'close',
  't-request-id': 'RQ1bf727ce267b5b974cd1eeab122ad02e',
  'x-shenanigans': 'none',
  'access-control-allow-origin': '*',
  'access-control-allow-headers': 'Accept, Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since',
  'access-control-allow-methods': 'GET, POST, DELETE, OPTIONS',
  'access-control-expose-headers': 'ETag',
  'access-control-allow-credentials': 'true',
  'x-powered-by': 'AT-5000',
  'x-home-region': 'us1',
  'x-api-domain': 'serverless-upload.twilio.com',
  'strict-transport-security': 'max-age=31536000'
}

我假设问题可能出在使用 JS 文件的文本版本上,但不完全确定。当从 pastebin 中读取时,它以“string”类型返回。

谢谢!

将文件名作为“内容”参数的第三个参数

form.append("Content", collect_file, "collect.js");