Используйте axios и axios-mock-адаптер

Я пытаюсь использовать axios и axios-mock-adapter в одном месте, чтобы собрать больше макетов, а затем экспортировать экземпляр axios, чтобы использовать его там, где я хочу:

mocks.js

import axios from 'axios';
import MockAdapter from 'axios-mock-adapter';

let instance = axios.create({
    baseURL: 'https://some-domain.com/api/',
    timeout: 1000,
    headers: {'X-Custom-Header': 'foobar'}
});

let mock = new MockAdapter(instance);
mock.onGet('/users').reply(200, {
    users: [
        { id: 1, name: 'John Smith' }
    ]
});

export {instance}

main.js

import instance from './mock'

instance.get('/users')
  .then(function(response) {
    console.log(response.data);
  });

Но я получаю эту ошибку:

Uncaught TypeError: Cannot read property 'get' of undefined

Кто-нибудь может мне помочь? что я скучаю?

1 ответ

Решение

Использование export default instance вместо export {instance}

main.js

import {instance} from './mock'

Избегайте экспорта по умолчанию - он позволяет импортировать экспортированный модуль с любым именем.

Лучше всего использовать именованные экспорты (обернутые в {}) для обеспечения согласованного именования во всех импорте.

Другие вопросы по тегам