javascript - [Vuejs ]Navigating to current location ("...") is not allowed - Stack Overflow

In some situation, my logrocket always prompt me the the following errorNavigating to current location

In some situation, my logrocket always prompt me the the following error

Navigating to current location ("/error") is not allowed

However, when i check it in my web application. It works perfectly. I have no idea why logrocket always prompt this error in some of the user.

The following is my js code

 gotoErrPage () {
      this.$router.replace({
        name: 'Error',
        query: {
          showRefresh: true,
        },
      })
    },

In some situation, my logrocket always prompt me the the following error

Navigating to current location ("/error") is not allowed

However, when i check it in my web application. It works perfectly. I have no idea why logrocket always prompt this error in some of the user.

The following is my js code

 gotoErrPage () {
      this.$router.replace({
        name: 'Error',
        query: {
          showRefresh: true,
        },
      })
    },
Share Improve this question asked Sep 23, 2019 at 6:24 Chan Yoong HonChan Yoong Hon 1,8227 gold badges37 silver badges73 bronze badges 1
  • would you show your router config? – Chiu Commented Sep 23, 2019 at 6:45
Add a ment  | 

1 Answer 1

Reset to default 3

Finally I understand why it happened. The error you see in the console is part of the new promise api: before, if no callbacks were supplied to router.push, errors were only sent to the global router error handler. Now, because both push and replace return a promise, if the navigation failure (anything that cancels a navigation like a next(false) or next('/other') also counts) is not caught, you will see an error in the console because that promise rejection is not caught. However, the failure was always there because trying to navigate to same location as the current one fails. It's now visible because of the promise being rejected but not caught.

I able to solve this issue with 2 solutions as following. The first solutions is using router-link.

<router-link
  to="/Error"
  v-slot="{ href, route, navigate, isActive, isExactActive }"
>

</router-link>

The second solutions is add catch in my function

   this.$router.replace({
        name: 'Error',
        query: {
          showRefresh: true,
        }).catch(err => {})

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745470582a4629113.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信