HTML Webpack插件呈现JS模块而不是HTML文件

问题描述 投票:0回答:1

[我正在尝试使用EJS加载器和Html Webpack插件来编译和输出HTML文件,但它一直在渲染这样的文件:

module.exports = "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\">\n  </head>\n\n  <body>\n    <div id=\"root\"></div>\n  </body>\n</html>\n"

这是我的webpack配置:

module.exports = {
  target: 'node',
  entry: './src/server.tsx',
  output: {
    filename: 'server.js'
  },
  module: {
    rules: [
      {
        test: /\.ejs$/, 
        use: {
          loader: 'ejs-webpack-loader',
          options: {
            data: { example: 'test' }
          }
        }
      }
    ]
  },
  plugins: [
    new HtmlWebpackPlugin({
      filename: 'output.html',
      inject: false,
      template: path.join(rootDir, '../compiler/templates/index.ejs'),
      { example: 'test' },
      minify: false
    })
  ]
}

这是我的'index.ejs'文件:

<!DOCTYPE html>
<html lang="en">
  <head>
    <%- include ./test.ejs %>
  </head>

  <body>
    <div id="root"></div>
  </body>
</html>

这是我的'test.ejs'文件:

<meta charset="UTF-8">

我希望它输出一个看起来像这样的output.html文件:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
  </head>

  <body>
    <div id="root"></div>
  </body>
</html>

但是我却得到了:

module.exports = "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\">\n  </head>\n\n  <body>\n    <div id=\"root\"></div>\n  </body>\n</html>\n"

[C0似乎在工作,并且正确地注入了部分代码,但是HtmlWebpackPlugin正在呈现JS而不是HTML。

如何获取HtmlWebpackPlugin以正确呈现HTML文件?

javascript webpack ejs html-webpack-plugin
1个回答
0
投票

您不需要在配置中使用特殊的加载器(ejs-webpack-loader),因为ejs-webpack-loader自带了对ejs的支持。

只需尝试将其删除。 :]

© www.soinside.com 2019 - 2024. All rights reserved.