aurelia-fetch-client - a promise was rejected with a non-error: [object Response]
aurelia-fetch-client - a promise was rejected with a non-error: [object Response]
我正在使用 aurelia-fetch-client,当我向我的 nodejs 后端发送请求时出现此错误 api:
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;
}
}
感谢任何帮助
aurelia-fetch-client 标准配置(通过 .useStandardConfiguration()
在您的代码中应用)拒绝不成功的 HTTP 响应状态代码。在 aurelia/fetch-client 回购 here 中有一个最近(已关闭)的问题。 fetch 客户端拒绝响应本身的承诺,因此浏览器抱怨(它希望承诺只被错误实例拒绝)。
我通过删除 .useStandardConfiguration()
在我自己的代码中解决了这个问题,因为我在这个特定项目中不需要它。您可以查看 the source code 以详细了解配置情况。
我正在使用 aurelia-fetch-client,当我向我的 nodejs 后端发送请求时出现此错误 api:
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;
}
}
感谢任何帮助
aurelia-fetch-client 标准配置(通过 .useStandardConfiguration()
在您的代码中应用)拒绝不成功的 HTTP 响应状态代码。在 aurelia/fetch-client 回购 here 中有一个最近(已关闭)的问题。 fetch 客户端拒绝响应本身的承诺,因此浏览器抱怨(它希望承诺只被错误实例拒绝)。
我通过删除 .useStandardConfiguration()
在我自己的代码中解决了这个问题,因为我在这个特定项目中不需要它。您可以查看 the source code 以详细了解配置情况。