javascript - axios odefinierad i TypeScript


Jag har problem med min axios-import. I mitt TypeScript importerar jag det så här:

import axios from 'axios';

Men så fort jag vill använda axios returneras följande fel:

TypeError: Kan inte läsa egenskapen 'default' av undefined

Så här vill jag använda axios:

const config = {
        baseURL: 'https://git.something.net/api/v4',
        headers: {'PRIVATE-TOKEN': 'IAMNOTTELLINGYOUTHIS'},
    }

const ac = axios.create(config);

axios-versionen är 0.18.0

Det verkar som att modulen inte riktigt exporterar default Axios;

Jag har spenderat de senaste timmarna med att googla och försöka fixa det, men allt jag hittade var att sätta "allowSyntheticDefaultImports": true i compilerOptions i min tsconfig.

Jag tog också en titt på axios.js och hittade dessa rader:

// Allow use of default import syntax in TypeScript
module.exports.default = axios;

För att hålla det kort, har jag absolut ingen aning om vad jag gör fel och skulle uppskatta all hjälp. Om du behöver ytterligare kod eller information, meddela mig så ska jag försöka tillhandahålla informationen.

Tack på förhand!

Svar #1

svaret från detta inlägg kan hjälpa dig Axios POST körs inte inom NodeJS/Express-route

i princip postade jag där en es6 axios-klass som du kan importera genom:

npm i @eneto/es6-axios-class

or

npm i es6-axios-class

du kan hitta ett mycket komplett exempel här: https://github.com/EnetoJara/axios-typescript/blob/master/examples/userApi.ts

import { AxiosError, AxiosRequestConfig, AxiosResponse } from 'axios';
import { Api } from './../src/api/api';
import { Credentials, Token, User } from './interfaces';

export class UserApi extends Api {
    public constructor (config?: AxiosRequestConfig) {
        super(config);


        // this middleware is been called right before the http request is made.
        this.interceptors.request.use((param: AxiosRequestConfig) => ({
            ...param,
        }));

        // this middleware is been called right before the response is get it by the method that triggers the request
        this.interceptors.response.use((param: AxiosResponse) => ({
            ...param
        }));

        this.userLogin = this.userLogin.bind(this);
        this.userRegister = this.userRegister.bind(this);
        this.getAllUsers = this.getAllUsers.bind(this);
        this.getById = this.getById.bind(this);
    }

    public userLogin (credentials: Credentials): Promise<Token> {
    }

    public userRegister (user: User): Promise<number> {
    }

    public async getAllUsers (): Promise<User[]> {
    }

    public getById (id: number): Promise<User> {
    }
}