环境
- vite@4
- vue@2.7
- ant-design-vue@1.7.8
现象
vite 使用ant-design-vue 日期选择器控件(date-picker),只要绑定了v-modal,选择日期后就会报错。
报错
TypeError: (void 0) is not a function
at validator6 (moment-util.js:8)
at assertProp (vue.runtime.esm.js:5165)
at validateProp (vue.runtime.esm.js:5099)
at updateChildComponent (vue.runtime.esm.js:3966)
at prepatch (vue.runtime.esm.js:4413)
at patchVnode (vue.runtime.esm.js:6896)
at updateChildren (vue.runtime.esm.js:6783)
at patchVnode (vue.runtime.esm.js:6909)
at VueComponent.patch2 [as __patch__] (vue.runtime.esm.js:7077)
at VueComponent.Vue2._update (vue.runtime.esm.js:3769)
...
原因
根据报错,进入 ant-design-vue/es/_util/moment-util.js 文件
其头部引入了import * as moment from 'moment'; // 这个写法有问题
替换为 import moment from 'moment' 即可解决问题
解决
已经有人遇到过这个问题并封装了vite 插件,vite-plugin-antdv-fix - npm
下载此插件使用即可解决该问题。
import antdvFix from 'vite-plugin-antdv-fix';
export default defineConfig({
plugins: [
vue(),
antdvFix() // use plugin
],
});