aurelia-fetch-client - 一个承诺被拒绝,带有非错误:[object Response]

时间:2016-09-12 20:34:47

标签: node.js promise cors aurelia aurelia-fetch-client

我正在使用aurelia-fetch-client,当我向nodejs后端api发送请求时出现此错误:

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;
    }
}

一切正常但是这个警告非常烦人,我不知道如何修复它,这是发送请求的代码:

var devices = await DeviceInformation.FindAllAsync(GattDeviceService.GetDeviceSelectorFromUuid(new Guid("00001520-1212-efde-1523-785feabcd124")));
GattDeviceService m_service = await GattDeviceService.FromIdAsync(devices[0].Id);

任何帮助表示赞赏

1 个答案:

答案 0 :(得分:4)

aurelia-fetch-client标准配置(通过.useStandardConfiguration()应用于您的代码中)拒绝非成功的HTTP响应状态代码。在aurelia / fetch-client repo here中有一个最近(已关闭)的问题。 fetch客户端拒绝响应本身的promise,因此浏览器正在抱怨(它希望promise只会被Error实例拒绝)。

我通过删除.useStandardConfiguration()在我自己的代码中解决了这个问题,因为在这个特定项目中我不需要它。您可以查看the source code以了解有关配置情况的更多信息。