0

csv ファイルを取得して JSON に変換するために、コードで axios 呼び出しを実行しようとしています。コードが独立しているときは呼び出しと変換を正しく行うことができますが、外部ソースから関数として呼び出すように変更すると、axios 呼び出しが実行されたときにエラー コード 400 が返されますが、その後、とにかく、ステータス 200 で正しい応答を取得します。これは私がテストとして実行しているコードです:

console.log('Test1');
getCSVUsers(usersurl, user, pass, CSVdelimiter)
    .then((usersjson) => {
        console.log(usersjson.users[0]);
    })

そして関数の定義:

//Dependencies
import axios from 'axios';
import csv from 'csvtojson';

const getCSVUsers = (url,user,pass,delimiter) => {
  console.log('Test3')
  return new Promise((resolve, reject) => {
    console.log('Test4');
    let users = {}; //Creating JSON structure
    users.users = []; //Creating required array in users JSON.

    const options = { //Creating GET call credentials requirements
        method: 'post',
        headers: {
          'Authorization': 'Basic '+Buffer.from(`${user}:${pass}`).toString('base64')
        }
      }
      console.log('Test5');
        //Make API get call
        axios.get(url, options) //Making the call
        .then(response => { //Getting the response
          console.log('response.status'); 
          csv({ 
            delimiter: delimiter, //Defining the CSV delimiter
            trim:true
          })
            .fromString(response.data) //Processing CSV from response
            .then(function(jsonArrayObj){ //putting result in object
              users.users = jsonArrayObj; //putting object in json array
              resolve(users);
            })
        }).catch((err) => {
          console.log('TestErr');
          console.error(err);
        });
  });
}

export {getCSVUsers}

コンソールは次を返します。

Test1
Test3
Test4
Test5
Response Error:Error: Request failed with status code 400
200
{User1 stats are returned correctly}

関数を非同期にして「await」を追加してみましたが、それでも問題は解決しませんでした。

4

0 に答える 0