@kolomat

Почему не монтируются компоненты vue Laravel 9 + vue 3 + vite?

Добрый день, подскажите по такому вопросу, почему то не отображаются компоненты. Что не правильно делаю?
Конфиг vite
import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
import vue from '@vitejs/plugin-vue'

export default defineConfig({
    plugins: [
        vue(),
        laravel({
            input: ['resources/css/app.css', 'resources/js/app.js'],
            refresh: true,
        }),
    ],
});

resource/js/app.js
import './bootstrap';
import { createApp } from 'vue';
import Welcome from "../components/Welcome.vue";



createApp({
    components: {
        Welcome
    }
}).mount('#app')


Компанент там по сути пустой просто с заголовком.
Предтавлнеие
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Laravel</title>
        @vite(['resources/css/app.css', 'resources/js/app.js'])
    </head>
    <body class="antialiased">
        <div id="app">
            <welcome></welcome>
        </div>
    </body>
</html>

Но почему то получается пустая страница.
А если указать так например в app.js
createApp(Welcome).mount('#app')
Тогда все работает. Где я неправильно подключаю компоненты
  • Вопрос задан
  • 577 просмотров
Решения вопроса 1
@X110111
Потому что поумолчанию используется файл node_modules/vue/dist/vue.runtime.esm-bundler.js, который не поддерживает компиляцию шаблонов в рантайме.
Вам нужно дополнить ваш конфиг vite следующим:
export default defineConfig({
    plugins: [
        // Тут ваш код
    ],
    resolve: {
        alias: {
            vue: 'node_modules/vue/dist/vue.esm-bundler.js',
        },
    },
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы