html-webpack-plugin入口点undefined = index.html

时间:2018-06-13 16:17:19

标签: reactjs html-webpack-plugin webpack-4

我正在尝试设置webpack4和React样板,但面临问题呈现index.html。例如,当我更新index.html的标题并且未更新/ dist文件夹中的index.html时,只渲染title而index.js中没有任何内容呈现。请帮助我看一下项目中的以下细节。

的package.json

{
  "name": "react-webpack-boilerplate",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "webpack-dev-server --mode development --open --hot",
    "build": "webpack --mode production"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "babel-core": "^6.26.3",
    "babel-loader": "^7.1.4",
    "babel-preset-env": "^1.7.0",
    "babel-preset-react": "^6.24.1",
    "css-loader": "^0.28.11",
    "html-loader": "^0.5.5",
    "html-webpack-plugin": "^3.2.0",
    "redux-immutable-state-invariant": "1.2.3",
    "style-loader": "^0.21.0",
    "webpack": "^4.6.0",
    "webpack-cli": "^2.0.15",
    "webpack-dev-server": "^3.1.4"
  },
  "dependencies": {
    "bootstrap": "^4.1.1",
    "react": "^16.3.2",
    "react-bootstrap": "^0.32.1",
    "react-dom": "^16.3.2",
    "react-redux": "^5.0.7",
    "react-router": "2.4.0",
    "react-router-redux": "4.0.4",
    "redux": "3.5.2",
    "redux-thunk": "2.0.1"
  }
}

webpack.config.js:

// state rules for babel loader

// This plugin will generate html files with scripts injected 
const HtmlWebPackPlugin = require("html-webpack-plugin");

const htmlPlugin = new HtmlWebPackPlugin({
  template: "./src/index.html",
  filename: "./index.html"
});

module.exports = {
module: {
  rules: [
    {
      test: /\.js$/,
      exclude: /node_modules/,
      use: {
        loader: "babel-loader" // it will look for .babelrc
      }
    },
    {
      test: /\.html$/,
      use: [
        {
          loader: "html-loader"
        }
      ]
    },
    {
      test: /\.css$/,
     use: [
        {
          loader: "style-loader"
        },
        {
          loader: "css-loader",
          options: {
            modules: true,
            importLoaders: 1,
            localIdentName: "[name]_[local]_[hash:base64]",
            sourceMap: true,
            minimize: true
          }
        }
      ]
    },
    {
        test: /\.(png|jpg|gif|svg|eot|ttf|woff|woff2)$/,
        use: {
            loader: 'url-loader',
            options: {
            limit: 10000
            }
        }
    }
  ]
},
plugins: [htmlPlugin]
};

的index.html:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>React 2</title>
</head>
<body>
  <section id="index"></section>
</body>
</html>

index.js:

import React from "react";
import {ReactDOM} from 'react-dom';

console.log('loading index js');
const App = () => {
    return (
      <div>
        <h3>Our Application Is Alive</h3>
        <p>This isn’t reality. This — is fantasy.</p>
        <p>Yes I am quoting Star Trek I cant help it.</p>
      </div>
    );
  };

ReactDOM.render(<App />, document.getElementById('index'));

构建后,。/ did / index.html未更新,请参阅内容:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>React and Webpack4</title>
</head>
<body>
  <section id="index"></section>
<script type="text/javascript" src="main.js"></script></body>
</html>
下面的

在编译消息中找到:

Child html-webpack-plugin for "index.html":
     1 asset
    Entrypoint undefined = index.html
    [./node_modules/html-webpack-plugin/lib/loader.js!./src/index.html] 
327 bytes {0} [built]

3 个答案:

答案 0 :(得分:0)

webpack配置需要具有一个条目和可选输出(多个条目需要)。它不知道需要将哪些条目添加到index.html。

作为文档中的示例:

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

module.exports = {
  entry: 'index.js',
  output: {
    path: __dirname + '/dist'
  }
}

它将index.js添加到您的index.html文件中。

答案 1 :(得分:0)

正如我刚才在这里报道的https://github.com/jantimon/html-webpack-plugin/issues/1259 属性语法为“ fileName”而不是“ filename”

答案 2 :(得分:0)

这是webpack 4中的毫无意义的错误,可在运行3.pack的早期版本(如3.0.7)时运行,或者使用stats: { children: false, }忽略该错误 将解决此https://github.com/jantimon/html-webpack-plugin/issues/895