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

项目场景:

uniapp+vue3+ts+vite

问题描述:场景很多,下面只是一种

javascript 复制代码
// 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_modules下的文件源码,或者**你自己本地代码里的js文件源码。**在前面加上expoert default

javascript 复制代码
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)安装插件

javascript 复制代码
npm i @rollup/plugin-commonjs
npm i vite-plugin-require-transform

(2)添加配置

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

javascript 复制代码
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

javascript 复制代码
// codemirror 编辑器的相关资源
const Codemirror = require('codemirror');
相关推荐
前端 贾公子5 分钟前
Monorepo + vite 怎么热更新
前端
然我42 分钟前
不用 Redux 也能全局状态管理?看我用 useReducer+Context 搞个 Todo 应用
前端·javascript·react.js
前端小巷子1 小时前
Web 实时通信:从短轮询到 WebSocket
前端·javascript·面试
神仙别闹1 小时前
基于C#+SQL Server实现(Web)学生选课管理系统
前端·数据库·c#
web前端神器1 小时前
指定阿里镜像原理
前端
枷锁—sha1 小时前
【DVWA系列】——CSRF——Medium详细教程
android·服务器·前端·web安全·网络安全·csrf
枷锁—sha1 小时前
跨站请求伪造漏洞(CSRF)详解
运维·服务器·前端·web安全·网络安全·csrf
群联云防护小杜1 小时前
深度隐匿源IP:高防+群联AI云防护防绕过实战
运维·服务器·前端·网络·人工智能·网络协议·tcp/ip
汉得数字平台2 小时前
【鲲苍提效】全面洞察用户体验,助力打造高性能前端应用
前端·前端监控
花海如潮淹2 小时前
前端性能追踪工具:用户体验的毫秒战争
前端·笔记·ux