解决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');
  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
根据提供的引用内容,你遇到的问题是关于引入Vant组件库时报错的问题。根据引用\[1\],报错信息是Uncaught SyntaxError: The requested module '/node_modules/.vite/vue.js?v=xxxx'。根据引用\[3\],解决方法是卸载后重装Vant 2.12.2版本,并按需引入组件。 为了解决这个问题,你可以按照以下步骤进行操作: 1. 首先,根据引用\[2\]中的package.json配置,确保你的vue版本是3.2.24,vant版本是3.0.7。 2. 然后,运行命令`npm uninstall vant`卸载当前的Vant组件库。 3. 接下来,运行命令`npm install vant@2.12.2`重新安装Vant 2.12.2版本。 4. 在你的项目中,根据引用\[3\]中的配置方法,安装并配置babel-plugin-import插件。你可以运行命令`npm install babel-plugin-import -D`来安装该插件。 5. 在你的项目的.babelrc文件或babel.config.js文件中,根据你的实际情况添加以下配置: ```json { "plugins": \[ \["import", { "libraryName": "vant", "libraryDirectory": "es", "style": true }\] \] } ``` 6. 最后,在你需要使用Vant组件的地方,根据你的需求选择全局注册或页面注册。全局注册可以在main.js文件中引入并使用`Vue.use(Button)`来全局注册Vant组件。页面注册可以在需要使用组件的页面中,通过`import {Button} from 'vant'`来引入组件,并在组件的components选项中注册。 通过以上步骤,你应该能够解决报错问题并成功引入Vant组件库。如果你仍然遇到问题,可以参考Vant官方文档\[3\]中的更多信息和示例。 #### 引用[.reference_title] - *1* *2* [Vue3+Vite+Vant报错Uncaught SyntaxError: The requested module ‘/node_modules/.vite/vue.js?...](https://blog.csdn.net/tiven_/article/details/126362355)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [vue2 vant组件库报错:ERROR in ./node_modules/@vant/use/dist/index.esm.mjs 101:12-19export ‘isVNode...](https://blog.csdn.net/sherlyxoxo/article/details/125984515)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值