【问题标题】:Importing Vue Router inside a JavaScript file causes 'Module Parse Failed' Error在 JavaScript 文件中导入 Vue 路由器会导致“模块解析失败”错误
【发布时间】:2020-07-12 00:54:02
【问题描述】:

我试图在axios的拦截器中访问路由器,但是当我在.jsaxios文件中导入文件时,出现错误Module parse failed: Unexpected token (1:0) You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders > <template>。

这是 router.js 文件的示例:

import Vue from "vue";
import Router from "vue-router";

Vue.use(Router);

const router = {
     base: process.env.BASE_URL,
     routes: [
          {
               path: "/settings",
               name: "settings",
               component: require('@/views/Settings.vue'),
          }
     ]
};
export default new Router(router);

并且拦截器文件包含:

import router from './router';

【问题讨论】:

    标签: vue.js axios vue-router loader


    【解决方案1】:

    你为什么使用require('@/views/Settings.vue')?

    请尝试使用import 函数。

    import Vue from 'vue';
    import Router from 'vue-router';
    
    Vue.use(Router);
    
    const router = {
      base: process.env.BASE_URL,
      routes: [
        {
          path: '/settings',
          name: 'settings',
          component: () => import('@/views/Settings.vue'),
        },
      ],
    };
    export default new Router(router);
    
    

    PS:回答您的评论。 在main.js文件中导出实例变量:

    import Vue from 'vue';
    import App from './App.vue';
    import router from './router';
    
    Vue.config.productionTip = false;
    
    let vm = new Vue({
      router,
      render: h => h(App),
    }).$mount('#app');
    
    export default vm; // ATENTION HERE
    

    在axios.js 文件中导入main.js 并访问$router:

    import vm from './main.js';
    ...
      // YOUR INTERCEPTOR
      vm.$router.push({ name: 'settings' });
    ...
    

    【讨论】:

    • 我之前试过了,但是还是出现了同样的问题。
    • 代码不是我的,但主要思想是我正在使用 axios.create 创建一个实例并使用以下方法监听响应: instance.interceptors.response.use(function (response) {.. .}) 在某些情况下我必须更改路线。
    • 为什么要更改axios文件中的路由?
    • 如果用户在其他页面上并且在此期间发送了特定响应,我想将用户重定向到主页。
    • 这个答案解决了你的问题吗?请接受此答案,这将对其他人有所帮助。 How to accept an answer?
    猜你喜欢
    • 1970-01-01
    • 2020-02-18
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    • 2020-08-27
    • 2021-01-14
    • 1970-01-01
    • 2013-01-29
    相关资源
    最近更新 更多