项目场景:

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');

相关阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: