uniapp 打包微信小程序时 vuedraggable 未放到 uni_modules 里怎么解决
我在使用uniapp打包微信小程序时遇到了一个问题:vuedraggable组件没有放到uni_modules目录里该怎么解决?请问有没有人遇到过类似情况,或者知道如何正确引入这个组件?求解决方法!
2 回复
将vuedraggable组件手动复制到uni_modules目录下,然后在pages.json中配置组件路径即可。
在UniApp中使用vuedraggable时,如果未将其放入uni_modules目录,可以通过以下步骤解决:
-
手动安装依赖
在项目根目录下执行命令安装vuedraggable:npm install vuedraggable[@next](/user/next) --save -
引入组件
在需要使用vuedraggable的页面或组件中,通过import引入:<script> import draggable from 'vuedraggable'; export default { components: { draggable }, // 其他代码... }; </script> -
配置H5兼容性(可选)
如果仅在小程序中使用,可跳过此步。若需兼容H5,检查vue版本是否兼容vuedraggable(推荐Vue 2.x配合vuedraggable@next)。 -
处理小程序兼容问题
vuedraggable依赖HTML5拖拽API,小程序环境不支持。需通过条件编译或替换方案:- 条件编译:仅H5使用vuedraggable,小程序使用原生movable-area组件:
<template> <!-- #ifdef H5 --> <draggable v-model="list"> <div v-for="item in list" :key="item.id">{{ item.name }}</div> </draggable> <!-- #endif --> <!-- #ifdef MP-WEIXIN --> <movable-area> <movable-view v-for="item in list" :key="item.id">{{ item.name }}</movable-view> </movable-area> <!-- #endif --> </template> - 替代方案:直接使用uni-app的
movable-area和movable-view实现拖拽,放弃vuedraggable。
- 条件编译:仅H5使用vuedraggable,小程序使用原生movable-area组件:
-
检查构建配置
确保vue.config.js(如有)未屏蔽node_modules,并重新构建项目。
总结:核心问题是vuedraggable依赖的浏览器API在小程序中不可用。推荐使用uni-app原生组件movable-area替代,或通过条件编译区分环境。

