electron-vite-vue打包完,vue-router报错exports is not defined

问题描述

开发环境是可以正常使用vue-router的,但打包后electron控制台出现Uncaught ReferenceError: exports is not defined报错
找了下是vue-router源码里面开头代码的问题Object.defineProperty(exports, ‘__esModule’, { value: true });,

官方关于这个问题的探讨

https://github.com/electron-vite/electron-vite-vue/issues/103

总结一下,官方插件影响了es模块的正常打包,导致vue-router使用路由懒加载的写法打包完会报错

解决办法一(推荐)

针对此,官方给出了解决方案,注意,需要vite-plugin-electron0.4.2版本及以上

vite.config.ts

import polyfillExports from 'vite-plugin-electron/polyfill-exports'

export default {
  plugins: [
    // ...other plugins
    polyfillExports(),
  ],
}

解决办法二

不使用路由组件懒加载,由原先的

import { createRouter, createWebHashHistory, RouteRecordRaw } from "vue-router"

const routes: Array<RouteRecordRaw> = [
  {
    path: "/",
    component: () => import("../pages/index.vue")
  }
]

const router = createRouter({
  history: createWebHashHistory(),
  routes
})

export default router

改为

import { createRouter, createWebHashHistory, RouteRecordRaw } from "vue-router"

import index from "../pages/index.vue"

const routes: Array<RouteRecordRaw> = [
  {
    path: "/",
    component: index
  }
]

const router = createRouter({
  history: createWebHashHistory(),
  routes
})

export default router

解决办法三

我个人使用的是vite-plugin-pages插件,动态生成路由信息,如果你也使用了这个插件,如下配置,也可以正常打包

vite.config.ts

build: {
    ...
    rollupOptions: {
      output: {
      format: "commonjs"
      }
    }
  }
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值