Skip to content

Innlegg

Workaround for 'Template parse errors;' in Angular

30. oktober 2017 • 2 min lesing

Workaround for 'Template parse errors;' in Angular

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.

↑ Tilbake til toppen

Du kan også like