У меня есть проект, в котором пользовательский интерфейс основан на angular 8, а бэкэнд - это сервис Springboot java. Весь проект представляет собой многомодульный проект с частью angular, представляющей собой отдельный модуль, в котором front-end builder
используется для сборки кода angular в один исполняемый файл jar. Приложение работает нормально, когда используется встроенный кот. У меня есть новое требование, чтобы попытаться развернуть часть angular ui отдельно на внешнем коте. Но когда я копирую папку dist в папку webapps и пытаюсь ее обслужить, браузер блокирует запрос:
Loading module from “http://localhost:8080/polyfills-es2015.js” was blocked because of a disallowed MIME type (“text/html”).
После выполнения По поиску в Google я понял, что проблема возникает из-за того, что angular 8 cli не удается добавить атрибут type
в тег script
в index.html
. Когда я вручную добавляю тип, все работает нормально. Может кто-нибудь, пожалуйста, помогите мне понять, почему это происходит, а также возможное решение проблемы, отличной от ручного редактирования.
Сгенерировано index.html
:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>My Application</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<i class="fas fa-chart-area"></i>
<link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body style="margin: 0;">
<app-root></app-root>
<script src="runtime-es2015.js" type="module"></script><script src="runtime-es5.js" nomodule defer></script><script src="polyfills-es5.js" nomodule defer></script><script src="polyfills-es2015.js" type="module"></script><script src="styles-es2015.js" type="module"></script><script src="styles-es5.js" nomodule defer></script><script src="scripts.js" defer></script><script src="vendor-es2015.js" type="module"></script><script src="vendor-es5.js" nomodule defer></script><script src="main-es2015.js" type="module"></script><script src="main-es5.js" nomodule defer></script></body>
</html>
Итак, суммируя все это работает следующим образом:
- Атрибут type больше не является обязательным в HTML5, поэтому angular cli больше не добавляет его в качестве атрибута. Во встроенном tomcat активы копировались в
ROOT
, что прекрасно работает, так как при развертывании во внешнем tomcat я держал ресурсы в папке в веб-приложениях, что означало, что мне нужно было изменить поле baseHref
(либо во время сборки используя команду или после сборки вручную), чтобы отразить то же самое. Работает следующее: - Хранение ресурсов в папке ROOT в веб-приложениях (все отлично работает, потому что файлы js теперь находятся в root /).
- Хранение файлов в например, в папке
MyApp
указывается значение baseHref
в index.html
.
Связано ссылка