Подтвердить что ты не робот

Entrypoint undefined = index.html с использованием HtmlWebpackPlugin

Я использую Webpack 4, и я создаю файл конфигурации, пытаясь использовать HtmlWebpackPlugin он получил это на консоли: Entrypoint undefined = index.html, он открывает браузер, и HTML появляется, но я получаю это странное сообщение на консоли, как это решить?

Так выглядит мой конфигурационный файл:

'use strict'

const webpack = require('webpack')
const { join, resolve } = require('path')

const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {
  mode: 'development', // dev
  devtool: 'cheap-module-eval-source-map', // dev
  entry: join(__dirname, 'src', 'index.js'),
  output: {
    filename: 'bundle.js',
    path: resolve(__dirname, 'dist')
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        loader: 'babel-loader'
      }
    ]
  },
  resolve: {
    extensions: ['*', '.js', '.jsx']
  },
  devServer: {
    contentBase: resolve(__dirname, 'build')
  },
  plugins: [
    new webpack.ProgressPlugin(),
    new HtmlWebpackPlugin({
      template: join(__dirname, 'public', 'index.html')
    }),

    new webpack.HotModuleReplacementPlugin(), // dev
    new webpack.NoEmitOnErrorsPlugin() // dev
  ]
}
4b9b3361

Ответ 1

Попробуй это; возможно, вы делаете неправильный путь к шаблону:

 new HtmlWebpackPlugin({
        template: resolve(__dirname, 'src/public', 'index.html'),
        filename: './index.html'
      }),

Если public находится в папке src, это должно работать Это мое предположение. Дайте мне знать, если проблема все еще сохраняется.

Ответ 2

Похоже, проблема с расширением шаблона запуска нежелательного загрузчика. Если расширение шаблона будет изменено на любое другое, плагин будет работать.

Если вы используете стандартную систему шаблонов веб-пакетов (EJS, начиная с веб-пакета 4), имеет смысл использовать ejs потому что шаблон больше не является действительным html:

new HtmlWebpackPlugin({
    // it works without 'path.resolve()'. No need for 'filename', defaults to 'index.html'
    template: "./public/index.ejs",
}),

По умолчанию webpack считает, что шаблон EJS, и автоматически обработает его с соответствующим загрузчиком. Если вы используете любую другую систему шаблонов, вам нужно будет добавить соответствующий загрузчик. Больше информации по официальной документации.