HTML Webpack Plugin will not compile as Thymeleaf variables are undefined

2.8k views Asked by At

When Webpack compiles my app which contains the below HTML, it complains the theme variable is undefined.

Here is my index.html file:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8"/>
</head>
<body th:class="${theme}">
    <div id="root"></div>
</body>
</html>

And here is the error I get:

Failed to compile.

Error in Template execution failed: ReferenceError: theme is not defined

- loader.js:4 eval
/src/main/resources/templates/index.html?./~/html-webpack-plugin/lib/loader.js:4:10
3

There are 3 answers

0
Aled Evans On BEST ANSWER

Put this in :

webpack.config

new HtmlWebpackPlugin({
     template: './index.ejs',
     filename: './index.html',
     minify: { collapseWhitespace: true },
     csrf: '${_csrf.token}',
}),

in your index.ejs file put :

<meta name="_csrf" th:content="<%= htmlWebpackPlugin.options.csrf %>"/>
1
Raul Bejarano On

Same error here. I've found this issue and you have just to make webpack use 'html-loader' like this:

new HtmlWebpackPlugin({
    template: '!!html-loader!index.html'
})

PS: Don't forget to install it before with npm ;)

0
Nick On

My workaround: replace $ to <%="$"%>