Мне кажется, я знаю, в чем проблема.
Похоже, вы страдаете от того, что конфигурация веб-пакета по умолчанию, поставляемая в комплекте с VueJS, не поддерживает то, что вы пытаетесь выполнить. На самом деле, вполне возможно, что Webpack не поддерживает то, что вы пытаетесь выполнить # 2471 # 6818 # 7843 .
Когда вы компилируете app2 в UMD и пытаетесь использовать его в app1 путем импорта UMD, динамический импорт app2 не разрешается и, следовательно, не копируется в publicPath
app1. Поскольку это динамический импорт, компиляция завершается успешно, и вы можете развернуть приложение. Однако при попытке загрузить приложение начинает жаловаться на отсутствие фрагментов.
Вот один из способов решения этой проблемы:
app2/package.json
{
"name": "app2",
...
"main": "src/router.js"
}
app2/src/router.js
const Hey = () => import(/*webpackChunkName: 'app2.Hello.vue' */ './components/HelloWorld.vue')
export default [
{
path: '/app2',
component: Hey,
name: 'app2.hey'
}
]
app1/router.js
import app2Router from 'app2'
import Home from './views/Home.vue'
export default new Router([
mode: 'history',
...
routes: [
{
path: '/',
name: 'home',
component: Home
},
...app2Router
]
])
Помечая main
или module
из app2/package.json
как router.js
вместо пакета UMD, вы заставляете app1 создавать весь граф зависимостей и включать любой обнаруженный динамический импорт. Это, в свою очередь, приводит к правильному копированию зависимостей.
Вы также можете достичь тех же результатов, используя
import app2Router from 'app2/src/router'