Вложенный каталог nuxt 3 + Vite

Я хочу использовать вложенный каталог в бета-версии nuxt 3 с vite.

В Nuxt 2 я использовал эту конфигурацию в (nuxt.config.js), и она работает:

      components: [
{
  path: '~/components', // will get any components nested in let's say /components/test too
  pathPrefix: false,
},],

У меня есть эта организация каталогов:

      | components
 - Header.vue
 - Footer.vue
 | sections
  - HeroSection.vue

но я получил эту ошибку, когда я пытаюсь поставить <HeroSection/>в pages/index.vue.

      [Vue warn]: Failed to resolve component: HeroSection
If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.
Invalid value used as weak map key

он больше не работает в nuxt 3 и нужно сделать другую настройку? Потому что я ничего не нашел об этом в документе

Спасибо <3

2 ответа

Использование вложенных каталогов требует добавления имени каталога к компоненту:

      <template>
  <SectionsHeroSection />
</template>

С таким поведением вы можете быть менее сложными в именовании своих компонентов:

      - components
    Header.vue
    Footer.vue
  - Sections
      Hero.vue

Чтобы мы могли использовать вот так

      <template>
  <SectionsHero />
</template>

Подробнее читайте в документах здесь: https://v3.nuxtjs.org/guide/directory-structure/components#component-names .

Я нашел это в документе:

      import { join } from 'pathe'
import { defineNuxtModule } from '@nuxt/kit'

export default defineNuxtModule({
  hooks: {
    'components:dirs'(dirs) {
      // Add ./components dir to the list
      dirs.push({
        path: join(__dirname, 'components'),
        prefix: 'awesome'
      })
    }
  }
})

https://v3.nuxtjs.org/docs/directory-structure/components/

Но это не работает с этой конфигурацией:

      hooks: {
    'components:dirs'(dirs) {
      // Add ./components dir to the list
      dirs.push({
        path: join(__dirname, 'components/sections'),
        prefix: false
      })
    }
  }
Другие вопросы по тегам