aurelia-fetch-client - обещание было отклонено с ошибкой: [ответ объекта]

Я использую aurelia-fetch-client, и я получаю эту ошибку, когда отправляю запрос к моему API-интерфейсу nodejs:

Warning: a promise was rejected with a non-error: [object Response]
    at http://localhost:9000/scripts/vendor-bundle.js:39700:20
    at Array.reduce (native)
    at applyInterceptors (http://localhost:9000/scripts/vendor-bundle.js:39696:33)
    at processResponse (http://localhost:9000/scripts/vendor-bundle.js:39688:12)
    at http://localhost:9000/scripts/vendor-bundle.js:39603:18
From previous event:
    at http://localhost:9000/scripts/vendor-bundle.js:39602:24
From previous event:
    at HttpClient.<anonymous> (http://localhost:9000/scripts/vendor-bundle.js:39590:64)
    at HttpClient.fetch (http://localhost:9000/scripts/vendor-bundle.js:39574:23)
    at AuthService.login (http://localhost:9000/scripts/app-bundle.js:126:30)
    at Login.login (http://localhost:9000/scripts/app-bundle.js:190:30)
    at CallScope.evaluate (http://localhost:9000/scripts/vendor-bundle.js:24067:21)
    at Listener.callSource (http://localhost:9000/scripts/vendor-bundle.js:27508:42)
    at http://localhost:9000/scripts/vendor-bundle.js:27532:24
    at HTMLDocument.handleDelegatedEvent (http://localhost:9000/scripts/vendor-bundle.js:25721:11)

Все работает нормально, но это предупреждение очень раздражает, и я не знаю, как это исправить, вот код, который отправляет запрос:

import {HttpClient, json} from 'aurelia-fetch-client';
import baseConfig from 'config';

export class AuthService {
    constructor() {
        this.http = new HttpClient().configure(config => {
            config
                .withBaseUrl(baseConfig.baseUrl)
                .useStandardConfiguration();
        });

        this.isAuthenticated = false;
    }

    login(credentials) {
        return this.http.fetch('/login', {
            method: 'post',
            body: json(credentials)
        })
            .then(res => {
                this.saveToken(res.token)
                return Promise.resolve();
            });
    }

    saveToken(token) {
        localStorage.setItem('token', token);
        this.isAuthenticated = true;
    }
}

Любая помощь приветствуется

1 ответ

Решение

Стандартная конфигурация aurelia-fetch-client (применяется в вашем коде через .useStandardConfiguration()) отклоняет неуспешные коды статуса ответа HTTP. Для этого существует недавняя (закрытая) проблема в репозитории aurelia/fetch-client. Клиент извлечения отклоняет обещание с самим ответом, и поэтому браузер жалуется (он хочет, чтобы обещания были отклонены только в случаях ошибки).

Я обратился к этому в своем собственном коде, удалив .useStandardConfiguration(), как мне это не нужно в этом конкретном проекте. Вы можете проверить исходный код, чтобы получить более полное представление о том, что происходит с конфигурацией.

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