Похоже, проблема в том, что вы используете полностью динамическую c переменную в качестве строки запроса для вашей import()
функции, которую веб-пакет не может статически анализировать , поэтому он не включает желаемый модуль в вашем комплекте.
Возможно, вы захотите дать вебпаку подсказку о том, что вы загружаете. Например:
const layoutImport = layout => import(`~/layouts/${layout}.vue`).then(m => m.default || m)
Или:
const routeImport = file =>
import(
/* webpackInclude: /layouts/(Container|OtherView|Etc).vue$/ */
file
).then(m => m.default || m)
Это заставит веб-пакет включить все макеты в ваш пакет (или указанные c макеты, включенные в ваше регулярное выражение), но все же разрешить Вы динамически импортируете их. Обратите внимание, что import()
рассматривается как точка разделения, поэтому, хотя файлы включены в ваш пакет, они обычно будут сгруппированы в отдельный «чанк».
Вы можете управлять некоторыми аспектами чанка ( например, его имя) с волхвами c комментариями . Если вы хотите сгруппировать макеты в разные блоки, вам может потребоваться более одной функции импорта:
const groupAImport = file =>
import(
/* webpackInclude: /layouts/(Container1|Container2).vue$/ */
file
).then(m => m.default || m)
const groupBImport = file =>
import(
/* webpackInclude: /layouts/(Container1|Container3|Etc).vue$/ */
file
).then(m => m.default || m)