Import w Vue3 czasem działa a czasem nie ...

Import w Vue3 czasem działa a czasem nie ...

Wątek przeniesiony 2024-05-09 11:15 z JavaScript przez Riddle.

phantom_wizard
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 147
0

Zacząłem uczyć się vue i natrafiłem na dziwny problem. Zdefiniowałem dwa store, które leżą w tym samym folderze: posts.store.js i auth.store.js. Importując je do komponentu zauważyłem ze zdziwieniem, że useUsersStore mogę zaimportować taką ścieżką:

Kopiuj
import { useUsersStore } from '@/stores';

ale już do importu posts muszę dać taką ścieżkę:

Kopiuj
import { usePostStore } from "@/stores/post.store.js";

Store zdefiniowane są w ten sposób:

Kopiuj
export const usePostStore = defineStore('postStore', {})
export const useUsersStore = defineStore('users', {})

Więc nie bardzo widzę powód dla którego miałby być konieczny różny import.

Jeśli spróbuję zrobić

Kopiuj
import { usePostStore } from "@/stores";

dostaję

Kopiuj
Uncaught SyntaxError: import not found: usePostStore

Czy istnieje jakieś logiczne wytłumaczenie?

not Michal
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Zug, Szwajcaria
  • Postów: 67
1

A masz może plik /stores/index.js ? Jeżeli tak, to co w nim jest?

EDIT: wygląda też, że masz jakiś "import path" mapping -> czyli to "@" w "from "@/stores". Możesz pokazać jak to jest zdefiniowane?

phantom_wizard
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 147
1

Faktycznie, spojrzałem i chodziło o mapowanie w index.js w folderze stores, wcześniej:

Kopiuj
export * from './auth.store';
export * from './users.store';

Działająca poprawka:

Kopiuj
export * from './auth.store';
export * from './users.store';
export * from './post.store';

Dzięki za pomoc!

not Michal
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Zug, Szwajcaria
  • Postów: 67
2

Na marginesie, barrel files (czyli ten index.js którego jesdyną rolą jest exportowanie dalej modułów) jest trochę "bad practice". Jeżeli nie musisz, to raczej bym unikał takiego rozwiązania. Patrz https://marvinh.dev/blog/speeding-up-javascript-ecosystem-part-7/

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.