Uncaught TypeError:Cannot redefine property: $router报错解决方案

原因:就如报错提示所描述的,不能重新定义$router,说明是重复定了$router。通常是因为在项目中安装了vue-router的依赖并且用Vue.use()使用了vue-router,还在index.html页面引入了vue-router.js文件。

项目打包优化阶段,为了解决打包成功后,单文件体积过大的问题 ,可以通过 webpack 的 externals 节点,来配置并加载外部的 CDN 资源。

若只在发布阶段配置了externals节点:


  • vue.config.js文件中的配置
config.when(process.env.NODE_ENV === 'production', config => {
            config.entry('app').clear().add('./src/main-prod.js')

            config.set('externals', {
                vue: 'Vue',
                'vue-router': 'VueRouter',
                axios: 'axios',
                lodash: '_',
                echarts: 'echarts',
                nprogress: 'NProgress'
            })
        })
  • public/index.html文件中的配置

    
        
        
        
    
    
        
        
        
        
        
        
    
        
        

此时,若在开发阶段运行项目(npm run serve):

项目报错:Uncaught TypeError:Cannot redefine property: $router

原因:就如报错提示所描述的,不能重新定义$router,说明是重复定了$router。通常是因为在项目中安装了vue-router的依赖并且用Vue.use()使用了vue-router,还在index.html页面引入了vue-router.js文件,也就是vue-router重复使用导致。

解决方案:

可在public/index.html 中加入if判断:


<% if(htmlWebpackPlugin.options.isProd){ %> 
    
    
    
    


    
    
    
    
    
    

    
    

    <% } %>

你可能感兴趣的:(Vue,vue.js,javascript,前端,vscode,cdn)