Innlegg
Workaround for 'Template parse errors;' in Angular
30. oktober 2017 • 2 min lesing
Dette var et av de mer frustrerende problemene med Angular 2/4/+. Det er ikke et problem med Angular 2/4/+ i seg selv, men med hvordan webpack samler de støttende HTML-filene.
Dette problemet oppstår når du kjører webpack med produksjonsflagget (webpack -p). Kompileringen fullføres, men kjøring av nettstedet genererer en kjøretidsfeil: Template parse errors
Uncaught Error: Template parse errors:
Unexpected closing tag "a". It may happen when the tag has already been closed by another tag. For more info see https://www.w3.org/TR/html5/syntax.html#closing-elements-that-have-implied-end-tags (" Home
4. [AMS\[ERROR ->\]](/ams/#/search)
5. [ Logout</a"): ng:///e/e.html@0:557 Unexpected closing tag "a". It may happen when the tag has already been closed by another tag. For more info see https://www.w3.org/TR/html5/syntax.html#closing-elements-that-have-implied-end-tags ("MS](/ams/#/logout)
6. [ Logout\[ERROR ->\]](/ams/#/logout)
Den mistenkte HTML:
<div class="navbar navbar-light bg-faded rounded navbar-toggleable-md"><div class="collapse navbar-collapse" id="containernavbar"> <global-search></global-search>- <a class="nav-link" routerlink="['']"> Home</a>
- [AMS](/ams/#/search)
- [ Logout](/ams/#/logout)
</div></div>
Jeg kunne ikke finne noe galt med denne HTML-en. Jeg kjørte den gjennom flere online HTML-validatorer, og HTML-en kom alltid tilbake som gyldig HTML. Etter noen uker med å slite med dette og ikke komme noen vei, skjønte jeg at det måtte være en måte å omgå dette problemet på.
Det jeg oppdaget, via en GitHub-tråd (beklager at jeg mistet lenken til den) var at det er HTML-lasteren som prøver å minimere HTML-en som forårsaker problemet. Hvis HTML-minimering slås av, forsvinner dette problemet. For å være rettferdig, hadde de fleste som fikk denne feilen ugyldig HTML. Jeg oppfordrer deg til å sjekke HTML-en din før du arbeider rundt dette problemet, du kan bare skyve problemet videre.
Å slå av HTML-minimering er like enkelt som å oppdatere HTML-lasteren din i webpack.config.js.
Før:
{
test: /.html$/,
loader: 'html-loader'
},
Etter:
{ test: /.html$/, use: [ { loader: ‘html-loader’, options: { minimize: false, removeComments: false, collapseWhitespace: false, removeAttributeQuotes: false } } ] },
Forfatter: Chuck Conway er en AI-ingeniør med nesten 30 års erfaring innen programvareutvikling. Han bygger praktiske AI-systemer—innholdspipelines, infrastrukturagenter og verktøy som løser virkelige problemer—og deler det han lærer underveis. Koble til ham på sosiale medier: X (@chuckconway) eller besøk ham på YouTube og på SubStack.