#vuejs2 #mixins
#vuejs2 #смешивания
Вопрос:
Я использую mixins в компонентах подмножества app.vue без каких-либо проблем, все хорошо и работает нормально, но когда я хочу использовать его в компоненте app.vue, у меня возникает ошибка в консоли.
<script>
/* eslint-disable */
import PanelUser from "./layouts/PanelUser";
import Auth from "./mixins/Auth";
export default {
name: "App",
mixins: [Auth],
components: {
PanelUser
},
};
</script>
Я также не могу использовать маршрутизатор; когда я его использую, страница полностью белая и ничего не отображается.
Комментарии:
1. Я думаю, что у вашего маршрутизатора, js есть проблема ,
Ответ №1:
Я нашел, как проверить эту ситуацию.
Во-первых, вы могли видеть, что ошибка вызвана методом checkComponents, наведите курсор мыши и щелкните левой кнопкой мыши.
Во-вторых, добавьте точку останова, а затем обновите страницу.
В-третьих, возможно, вы могли бы обнаружить, что некоторые миксины или компоненты, на которые ссылаются, показывают undefined. В моем случае второй миксин не определен.
Наконец, проверьте ссылку или файл mixin. Я обнаружил, что причина в том, что я скопировал mixin из другого файла и забыл переименовать mixin при объявлении части.
Вот и все, попробуйте проверить сами. 🙂
Комментарии:
1. Я хотел бы указать на этот ответ как на хороший пример полезного и обучающего. Спасибо, что нашли время написать этот ответ.
Ответ №2:
Вам необходимо изменить:
импортируйте PanelUser из «./layouts/PanelUser»;
Для
импортируйте {PanelUser} из «./layouts/PanelUser»;
И
импортируйте Auth из «./mixins/Auth»;
Для
импортируйте {Auth} из «./mixins/Auth»;
Ответ №3:
Ошибка связана со смешиванием.
Убедитесь, что ваши микшины, используемые в ваших компонентах, верны. (например, имя, путь импорта esm и т. Д.)
import samplePackage from "sample-package";
import anotherMixin from "another-package/path/to/mixin";
export default {
mixins: [
samplePackage.sampleMixin,
anotherMixin
]
}
Ответ №4:
После пары часов отладки я обнаружил, что в нашем случае виновником был vuelidate
. Мы попытались перейти с Webpack на Vite, сохранив Vue 2.7 и vuelidate 3.
Импорт:
import { validationMixin } from 'vuelidate'
console.log(validationMixin // undefined in production build
печатается только undefined
после vite build
Прочитав о проблемах, связанных с импортом без ESM (# 1, # 2), я попытался изменить импорт на vuelidate / src:
import { validationMixin } from 'vuelidate/src/index'
console.log(validationMixin) // works!
// import the validators from "lib" though, src threw an require-js error for me
import { required, email, minLength } from "vuelidate/lib/validators"