Vue3 Vite vue-quill图片大小插件踩坑

打包报错提示default 未被导出

报错信息如下

代码如下

javascript 复制代码
import { QuillEditor, Quill } from '@vueup/vue-quill'
import '@vueup/vue-quill/dist/vue-quill.snow.css'
// 引入图片缩放插件
import ImageResize from 'quill-image-resize-module'
Quill.register('modules/imageResize', ImageResize)

按照这种方式配置,在本地启动项目是不会报错的,只有打包发布的时候才能发现问题。

解决办法

上面的引入代码在网上随处可见,但是它并不适用于Vue3 + Vite4环境,我们需要对代码做出一些修改。

javascript 复制代码
import { QuillEditor } from '@vueup/vue-quill'
import '@vueup/vue-quill/dist/vue-quill.snow.css'

// 引入图片缩放插件
import 'quill-image-resize-module/image-resize.min.js'

const options = ref({
  theme: "snow",
  bounds: document.body,
  debug: "warn",
  modules: {
    // 工具栏配置
    toolbar: [
      ["bold", "italic", "underline", "strike"],       // 加粗 斜体 下划线 删除线
      ["blockquote", "code-block"],                    // 引用  代码块
      [{ list: "ordered" }, { list: "bullet" }],       // 有序、无序列表
      [{ indent: "-1" }, { indent: "+1" }],            // 缩进
      [{ size: ["small", false, "large", "huge"] }],   // 字体大小
      [{ header: [1, 2, 3, 4, 5, 6, false] }],         // 标题
      [{ color: [] }, { background: [] }],             // 字体颜色、字体背景颜色
      [{ align: [] }],                                 // 对齐方式
      ["clean"],                                       // 清除文本格式
      ["link", "image", "video"]                       // 链接、图片、视频
    ],
    // 图片缩放配置 具体需要哪些功能可以自行调整
    imageResize: {
      modules: ["Resize", "DisplaySize", "Toolbar"]
    }
  },
  placeholder: '请输入内容',
  readOnly: props.readOnly,
  theme: 'snow'
})

这里不再将ImageResize插件当作模块引入,而是直接引入对应的js文件。 运行命令 安装 @rollup/plugin-inject

shell 复制代码
pnpm add @rollup/plugin-inject -D

@rollup/plugin-inject相当于webpack.ProvidePlugin,它可以在全局中注入需要的依赖。安装完成后修改vite.config

javascript 复制代码
// 导入inject插件
import inject from '@rollup/plugin-inject'

// 在plugins属性下加入以下配置,它可以在全局注入quill
inject({
  'window.Quill': ['@vueup/vue-quill', 'Quill'],
  Quill: ['@vueup/vue-quill', 'Quill']
})

至此,插件可以正常引入,打包也不再报错

cannot read property 'imports' of undefined" 错误也可以使用上述方法解决
相关链接 github.com/kensnyder/q...

相关推荐
LuHang44 分钟前
从天地图切换到高德地图:一次真实的底图迁移实战
前端·vue.js·cesium
ruanno_top4 小时前
Vue 3 后台权限路由:我漏掉了按钮级裁剪,还把 403 写成了 404
vue.js
栉甜5 小时前
Vue2学习内容(上)
前端·javascript·vue.js·学习
小郎君6587 小时前
(六)el-cascader 的展示值为什么不能直接 join:emitPath、路径还原与多选去重
vue.js·算法
用户093671755417 小时前
用 4500 行 TypeScript 复刻了童年方格纸上的海战棋
前端·vue.js
行走的陀螺仪9 小时前
Claude Code 从入门到实战(一):安装、登录与第一个Vue项目
前端·javascript·vue.js
jktantan19 小时前
Vue keep-alive 切标签后滚动位置回顶?因为 onDeactivated 里读到的 scrollTop 是 0
前端·javascript·vue.js
小郎君6581 天前
(一)为什么表单需要第三种状态:disabled、readonly 与纯文本展示
前端·vue.js
jktantan1 天前
(二)Vue 3 的 attrs 不是响应式:el-form 扩展属性同步的三种方案
前端·javascript·vue.js·element-plus
Highcharts.js1 天前
Highcharts 集成到 React 或 Vue 项目中时,如何高效地使用 TypeScript技巧?
vue.js·人工智能·react.js·typescript·前端框架·highcharts