mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
ErrorHandling: Fixes issues with bad error messages (#63775)
This commit is contained in:
parent
a2bd98488d
commit
27070c252d
@ -118,6 +118,7 @@ export interface FetchError<T = any> {
|
||||
status: number;
|
||||
statusText?: string;
|
||||
data: T;
|
||||
message?: string;
|
||||
cancelled?: boolean;
|
||||
isHandled?: boolean;
|
||||
config: BackendSrvRequest;
|
||||
|
@ -24,6 +24,7 @@ import (
|
||||
"github.com/grafana/grafana/pkg/services/secrets"
|
||||
"github.com/grafana/grafana/pkg/services/user"
|
||||
"github.com/grafana/grafana/pkg/setting"
|
||||
"github.com/grafana/grafana/pkg/util"
|
||||
"github.com/grafana/grafana/pkg/web"
|
||||
)
|
||||
|
||||
@ -190,7 +191,7 @@ func (hs *HTTPServer) tryAutoLogin(c *contextmodel.ReqContext) bool {
|
||||
|
||||
func (hs *HTTPServer) LoginAPIPing(c *contextmodel.ReqContext) response.Response {
|
||||
if c.IsSignedIn || c.IsAnonymous {
|
||||
return response.JSON(http.StatusOK, "Logged in")
|
||||
return response.JSON(http.StatusOK, util.DynMap{"message": "Logged in"})
|
||||
}
|
||||
|
||||
return response.Error(401, "Unauthorized", nil)
|
||||
|
@ -317,6 +317,11 @@ export class BackendSrv implements BackendService {
|
||||
let description = '';
|
||||
let message = err.data.message;
|
||||
|
||||
// Sometimes we have a better error message on err.message
|
||||
if (message === 'Unexpected error' && err.message) {
|
||||
message = err.message;
|
||||
}
|
||||
|
||||
if (message.length > 80) {
|
||||
description = message;
|
||||
message = 'Error';
|
||||
|
@ -275,6 +275,26 @@ describe('backendSrv', () => {
|
||||
'bogus-trace-id',
|
||||
]);
|
||||
});
|
||||
|
||||
it('It should favor error.message for fetch errors when error.data.message is Unexpected error', async () => {
|
||||
const { backendSrv, appEventsMock } = getTestContext({});
|
||||
backendSrv.showErrorAlert(
|
||||
{
|
||||
url: 'api/do/something',
|
||||
} as BackendSrvRequest,
|
||||
{
|
||||
data: {
|
||||
message: 'Unexpected error',
|
||||
},
|
||||
message: 'Failed to fetch',
|
||||
status: 500,
|
||||
config: {
|
||||
url: '',
|
||||
},
|
||||
} as FetchError
|
||||
);
|
||||
expect(appEventsMock.emit).toHaveBeenCalledWith(AppEvents.alertError, ['Failed to fetch', '']);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -1,10 +1,12 @@
|
||||
import { isFetchError } from '@grafana/runtime';
|
||||
|
||||
export function getMessageFromError(err: unknown): string {
|
||||
if (err) {
|
||||
if (typeof err === 'string') {
|
||||
return err;
|
||||
} else if (err instanceof Error) {
|
||||
}
|
||||
|
||||
if (err) {
|
||||
if (err instanceof Error) {
|
||||
return err.message;
|
||||
} else if (isFetchError(err)) {
|
||||
if (err.data && err.data.message) {
|
||||
@ -14,5 +16,6 @@ export function getMessageFromError(err: unknown): string {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return JSON.stringify(err);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user