当前位置: 代码网 > it编程>编程语言>Javascript > vite打包出现 "default" is not exported by "node_modules/...问题解决办法

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

2024年06月11日 Javascript 我要评论
项目场景:vue3+ts+vite项目打包问题描述// codemirror 编辑器的相关资源import codemirror from 'codemirror';error during buil

项目场景:

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/...内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com