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/...内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
最新评论