vite打包出现 "default" is not exported by "node_modules/...问题解决办法

 更新时间:2024年06月04日 09:12:15   作者:狂野小青年  
这篇文章主要给大家介绍了关于vite打包出现 "default" is not exported by "node_modules/...问题的解决办法,文中通过代码将解决的办法介绍的非常详细,对同样遇到这个问题的朋友具有一定的参考借鉴价值,需要的朋友可以参考下

项目场景:

vue3+ts+vite项目打包

问题描述

// codemirror 编辑器的相关资源
import Codemirror from 'codemirror';

error during build:
RollupError: "default" is not exported by "node_modules/vue/dist/vue.runtime.esm-bundler.js", imported by "node_modules/@kangc/v-md-editor/lib/codemirror-editor.js".
    at error (file:///D:...

原因分析:

报错意思是导入的js文件没有默认导出

解决方案:

有两种方法

1.修改node_modoules下的文件源码

在前面加上expoert default

export default (function (global, factory) {
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
    typeof define === 'function' && define.amd ? define(factory) :
      (global = global || self, global.CodeMirror = factory());
}(this, (function () {
  'use strict';

为这个js文件添加一个默认导出

不太推荐这个方法,虽然比较简单

2.安装@rollup/plugin-commonjs插件,vite-plugin-require-transform插件

@rollup/plugin-commonjs可以将commonjs模块转换层es6模块

但只会对require生效

所以需要将导入改为require格式

(1)安装插件

npm i @rollup/plugin-commonjs
npm i vite-plugin-require-transform

(2)添加配置

在vite.config.ts配置中添加插件,注意commonjs()必须在上面,否则可能不生效

import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import commonjs from '@rollup/plugin-commonjs';//引入commojs
import requireTransform from 'vite-plugin-require-transform';//引入require
export default defineConfig({
  plugins: [
    commonjs() as any,
    //我的入口文件是ts类型,所以下面必须加上.ts$,否则在main.ts无法使用require
    requireTransform({
      fileRegex: /.js$|.vue$|.png$|.ts$|.jpg$/
    }) //配置require
    vue(),
  ],
 }

(3)将main.ts中的导入改为require

// codemirror 编辑器的相关资源
const Codemirror = require('codemirror');

总结 

到此这篇关于vite打包出现 "default" is not exported by "node_modules/...问题解决办法的文章就介绍到这了,更多相关vite打包default is not exported by node_modules/...内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue3异步组件Suspense的使用方法详解

    Vue3异步组件Suspense的使用方法详解

    这篇文章主要介绍了Vue3异步组件Suspense的使用方法详解,需要的朋友可以参考下
    2023-01-01
  • 如何用vue3+Element plus实现一个完整登录功能

    如何用vue3+Element plus实现一个完整登录功能

    要实现用户的登录功能,可以使用Vue3和Element Plus,下面这篇文章主要给大家介绍了关于如何基于Vue3和Element Plus组件库实现一个完整的登录功能,文中提供了详细的代码示例,需要的朋友可以参考下
    2023-10-10
  • 探索 Vue.js 组件的最新特性(最新整理)

    探索 Vue.js 组件的最新特性(最新整理)

    本文将深入探讨 Vue.js 组件的一些最新特性,包括组合式 API、Teleport、Suspense 等,帮助开发者更好地掌握和运用这些特性,从而构建出更加高效、复杂的前端应用,感兴趣的朋友一起看看吧
    2025-07-07
  • 使用Vue实现调用接口加载页面初始数据

    使用Vue实现调用接口加载页面初始数据

    今天小编就为大家分享一篇使用Vue实现调用接口加载页面初始数据,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • Vue父子传递实例讲解

    Vue父子传递实例讲解

    在本篇文章里小编给大家整理的是关于Vue父子传递实例讲解,需要的朋友们可以跟着学习参考下。
    2020-02-02
  • Vue3整合WangEditor富文本编辑器的实践指南

    Vue3整合WangEditor富文本编辑器的实践指南

    这篇文章主要为大家详细介绍了如何在 Vue 3 项目中集成 WangEditor 富文本编辑器,实现图文混排、自定义扩展等高阶功能,感兴趣的小伙伴可以了解下
    2025-03-03
  • Vue3 实现一个自定义toast 小弹窗功能

    Vue3 实现一个自定义toast 小弹窗功能

    这篇文章主要介绍了Vue3 实现一个自定义toast 小弹窗,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09
  • 解决Vue开发中对话框被遮罩层挡住的问题

    解决Vue开发中对话框被遮罩层挡住的问题

    在Vue的开发中,一旦我们用到对话框,经常出现的问题是对话框被遮罩层挡住,怎么来解决这个问题呢?下面小编给大家带来了Vue开发中对话框被遮罩层挡住的问题及解决方法,一起看看吧
    2018-11-11
  • Vue自定义render统一项目组弹框功能

    Vue自定义render统一项目组弹框功能

    这篇文章主要介绍了Vue自定义render统一项目组弹框功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • vue中的主动触发点击事件

    vue中的主动触发点击事件

    这篇文章主要介绍了vue中的主动触发点击事件,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04

最新评论