Угловой 6 - Укажите путь для ленивых загруженных кусков - PullRequest
0 голосов
/ 05 июня 2018

У меня есть основной модуль с подмодулями, изначально я хотел сделать эти модули загруженными, поэтому я сделал:

1-я попытка - полная загрузка

import {DashboardModule} from './module/dashboard/dashboard.module';
export const _dashboardModule = () => DashboardModule;
export const routes: Routes = [
    {
        path: '',
        children: [
            {
                path: 'dashboard',
                loadChildren: _dashboardModule
            }
        ]
    }                
];

У меня все работало нормально, пока я не начал собирать prod build без компиляции.В этот момент я сталкиваюсь с проблемой, которая упоминается здесь: https://github.com/angular/angular-cli/issues/4192

2-я попытка - отложенная загрузка

На основе указанного мной билета я начинаю использовать строковые пути длямодули, например

loadChildren: './path/to/module/dashboard.module#DashboardModule'

, которые генерируют отдельный пакет для каждого модуля.Для сборки я использовал команду angular-cli

ng build --output-path=../my/ouput/path --prod --aot --output-hashing none --vendor-chunk

Поскольку мое приложение является частью существующего огромного приложения, я не могу использовать сгенерированный index.html, но я использую файл .ftl, в котором я указываю, откуда все сценарии должнызагружаться так:

<body>
    <my-app></my-app>

    <script src="<@versionedUri src="${base}/path/to/file/runtime.js"/>"></script>
    <script src="<@versionedUri src="${base}/path/to/file/polyfills.js"/>"></script>
    <script src="<@versionedUri src="${base}/path/to/file/styles.js"/>"></script>
    <script src="<@versionedUri src="${base}/path/to/file/vendor.js"/>"></script>
    <script src="<@versionedUri src="${base}/path/to/file/main.js"/>"></script>
</body>

И это проблема, если вы пытаетесь выполнить отложенную загрузку, потому что выходные файлы моей сборки находятся в другой папке, чем мой файл .ftl, который я использую вместо index.html, проблемачто когда вы открываете приложение в браузере, оно пытается загрузить чанки из той же папки, где находится .ftl, а их там нет.

Какие у меня вопросы:

  • Есть ли способ указать путь для файлов чанков?
  • Или есть какой-то другой способ загрузить модуль без импорта дочерних маршрутов и использовать их как: children: dashboardRoutes

Ответы [ 2 ]

0 голосов
/ 24 апреля 2019

У меня похожая ситуация, и мне помогло добавление URL развертывания в мой angular.json.Комментарий Германа Джайна помог.Я просто добавляю этот ответ, чтобы указать, куда добавить этот параметр в angular.json.

Следуйте по этому пути в angular.json:

Проекты -> Ваш проект -> Архитектор -> Построить -> Параметры-> deployUrl

Другой способ без указания этого - передать это как параметр следующим образом:

    ng build --watch --deploy-url /dist/

Таким образом, мои чанки загружаются из myWeb / dist /

0 голосов
/ 31 августа 2018

Путь, в котором создаются ленивые куски (и все другие .js сценарии), указывается в файле angular.json, @ (projects: <<em> projectName >: architect: options :) outputPath: <<em> your-output-path > ...

У меня проблемы с самим собой, заставляя приложение Angular искать чанк в этом месте, оно, похоже, ищет егов корне (baseUrl).

Я нахожусь в ситуации, аналогичной OP, в которой приложение Angular встроено в приложение .NET MVC5, поэтому вместо использования файла index.html, созданного Angular, файл, «обслуживающий» приложение, - это MVC Home.Индексный вид.Мой Index.cshtml файл выглядит очень похоже на файл OP .ftl. Мой вопрос - как сказать приложению Angular искать чанк в расположении outputPath?

...