에러
프로젝트 라우터 이동시 콘솔에 다음과같은 에러가 발생했다.
Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to current location: "/test".
이는 같은 라우터로 router.push('path')를 하게될때 발생한다.
위의 경우는 /test 링크에서 /test로 이동하려 할때 발생하는 에러이다.
해결방법 1
$router.push()의 에러 예외처리가 되지 않아 기본으로 콘솔에 에러가 찍힌다.
catch문으로 위 에러를 잡아주는 방법이 있다.
this.$router.push('/')
에서
this.$router.push('/').catch(()=>{});
로 catch만 추가해주면된다.
하지만 이방법으로 하면 $router.push()가 사용되는 코드 전부 catch문을 붙여 예외처리를 해줘야한다.
때문에 나는 해결방법 2로 에러를 개선했다.
해결방법 2
router/index.js 파일에서 아래와 같이 수정해주면 다른 파일들에서 $router.push를 사용할 때 catch를 붙여주지 않아도 되므로 코드 중복이 제거되는 장점이 있다.
src/router/index.js
import Vue from 'vue';
import VueRouter from 'vue-router';
Vue.use(VueRouter);
... 생략
const originalPush = VueRouter.prototype.push;
VueRouter.prototype.push = function push(location) {
return originalPush.call(this, location).catch(err => {
if (err.name !== 'NavigationDuplicated') throw err;
});
};
export default router;
1번 방법은 에러를 전부 무시하는 코드지만, 2번방법은 NavigationDuplicated 에러만 무시하는 코드이다.
'프론트엔드 > javascript' 카테고리의 다른 글
[js] 현재날짜 추출하기 (영어를 한글로) (0) | 2022.07.25 |
---|---|
[js] 객체(Object) 특정 value값 확인하기 (0) | 2022.06.21 |
[js] 이미지 404 에러 (img 404 error) (0) | 2022.03.16 |
[javascript] 자바스크립트 구조분해할당 (직관적인 코드를 짜는법) (0) | 2022.02.28 |
[javascript] 자바스크립트 소팅 sort() (큰수가 먼저 정렬되는 이유..?) (0) | 2022.02.28 |