UVue  A simple function to redirect to a specific page that works on client and server side:
export default {
  async asyncData({ redirect }) {
    redirect({ path: '' }, 302);
  },
  methods: {
    onClick() {
      this.$redirect({ path: '/some-path' });
    },
  },
};
TIP
location like in router.push() or router.replace() methodsWARNING
This needs @uvue/core/plugins/errorHandler plugin installed on your project
A simple function to throw an error
export default {
  async asyncData({ error }) {
    error(new Error(`I'm a teapot`), 418);
  },
  methods: {
    triggerError() {
      this.$error(new Error(`I'm a teapot`), 418);
    },
  },
};
TIP
To use Vue Class components in your application you need to include @uvue/core/vueclass
in your src/main.ts file:
import '@uvue/core/vueclass';
With that, Vue router and UVue plugins hooks will be correctly registered:
import Component from 'vue-class-component';
@Component
export default class PageComponent extends Vue {
  middlewares = [
    // ...
  ];
  async asyncData() {
    // ...
  }
  async fetch() {
    // ...
  }
}
This file will import some important types definition too.
If you use vue-meta package you can register its hook too:
import Vue from 'vue';
import VueMeta from 'vue-meta';
import Component from 'vue-class-component';
Vue.use(VueMeta, {
  keyName: 'head',
});
Component.registerHooks(['head']);
And then use it in your page components:
import Component from 'vue-class-component';
@Component
export default class PageComponent extends Vue {
  head() {
    return {
      title: 'Hello world!',
    };
  }
}
You will have to setup types definitions too, in src/vue-shims.d.ts:
import { MetaInfo } from 'vue-meta';
/**
 * Vue meta
 */
declare module 'vue/types/vue' {
  interface Vue {
    metaInfo?: MetaInfo | (() => MetaInfo);
  }
}
declare module 'vue/types/options' {
  interface ComponentOptions<V extends Vue> {
    metaInfo?: MetaInfo | (() => MetaInfo);
  }
}