1

我正在尝试将源地图上传到 Rollbar。使用curl它可以正常工作:

curl https://api.rollbar.com/api/1/sourcemap \
        -F access_token=${ACCESS_TOKEN} \
        -F version=${VERSION} \
        -F minified_url=${1} \
        -F source_map=@${SOURCE_MAP_PATH}

但是,使用 Node 应用程序,我得到Error: Request failed with status code 413

const fs = require('fs');
const FormData = require('form-data');
const axios = require('axios');

const stream = fs.createReadStream('/path/to/sourcemap');
const config = {
  filename: 'sourcemap',
  contentType: 'application/json',
}

const formData = new FormData();
formData.append('access_token', 'the-token');
formData.append('version', '1.2.3');
formData.append('minified_url', 'https://example.com/1.2.3/minified.js');
formData.append('source_map', stream, config);

axios.post('https://api.rollbar.com/api/1/sourcemap', formData, {
  headers: formData.getHeaders(),
});

这些都是完全相同的文件。不知道为什么 Node 版本不起作用。

编辑

有趣的是,如果我生成一个curl命令,那么它就可以工作:

const execaArgs = [
    'https://api.rollbar.com/api/1/sourcemap',
    '-F',
    'access_token=abc',
    '-F',
    'version=1.2.3',
    '-F',
    'minified_url='https://example.com/1.2.3/minified.js',
    '-F',
    `source_map=@${filePath}`
  ]
  const {stdout, stderr} = await execa('curl', execaArgs);

也是如此fetch

fetch('https://api.rollbar.com/api/1/sourcemap', {
    method: 'POST',
    body: formData
  })
    .then(res => res.json())
    .then(json => console.log(json));
4

1 回答 1

0

正如你提到的

如果我生成一个 curl 命令,那么它可以工作

抓取也是如此

但不在 Axios 中


HTTP 413是来自您的服务器的“有效负载太大” ,但是由于它可以正常使用 fetch 我猜这不是由服务器引起的。

你可以试试 https://github.com/mzabriskie/axios#request-config

axios({
url: '',
method: 'post',
data: {}
headers: {}
})

并让我们更新。

于 2019-08-21T15:18:46.197 回答