javascript - react - Uncaught Error : Target container is not a DOM element

标签 javascript html reactjs webpack jsx

我是新手。

我的错误是:

Uncaught Error: Target container is not a DOM element

我已经用谷歌搜索了很多次并找到了有这个错误的人:

Uncaught Error: Invariant Violation: _registerComponent(...): Target container is not a DOM element.

我的不包含:

_registerComponent(...):

这是我的文件:

index.html

<html>
<head>

    <meta charset="utf-8">
    <title>React</title>

</head>
<body>

    <div id="root"></div>
    <script src="./bundle.js"></script>

</body>
</html>

index.jsx

import React from 'react';
import ReactDOM from 'react-dom';

ReactDOM.render(
    <div>
        <h1>Hello World!</h1>
    </div>, 
    document.getElementById('root')
);

webpack.config.js

const path = require('path');

module.exports = {
    context: path.join(__dirname, 'src'),
    entry: './index.jsx',
    output: {
        path: path.join(__dirname, 'public'),
        filename: './bundle.js'
    },
    module: {
        loaders: [
            { test: /\.js$/, loader: 'babel-loader', exclude: /node_modules/ },
            { test: /\.jsx$/, loader: 'babel-loader', exclude: /node_modules/ },
        ],
    },
    resolve: {
        modules: [
            path.join(__dirname, 'node_modules')
        ]
    }
};

我发现人们遇到此错误的最常见问题是他们将 <script>在头部或 <div> 之前.但是我没有做这些,所以我不知道问题是什么。

最佳答案

我在这里参加派对肯定有点晚了,但我想为那些想要使用 webpack-dev-middleware 的人发布一个答案。而不是规避它。

对我来说,问题是 webpack-dev-middleware 的基本设置使用 html-webpack-plugin 在 webpack 文档中显示使用默认配置。此插件动态生成一个新的 index.html与您的 bundle.js 一起归档保存时,即使我写了一个 index.html包含 <div id="root"></div> 的文件,那不是提供给浏览器的那个。我能够通过运行 /node_modules/.bin/webpack 来验证这一点并在我的公共(public)路径目录中查看输出。

我的解决方案如下:

在 WebpackHtmlPlugin 的声明中添加一个配置对象:

plugins: [
    new HtmlWebpackPlugin({
      title: "boilerplate",
      template: path.join(__dirname, "pathto", "template.html"),
      inject: "body",
    }),
  ],

(这设置了模板文件的标题,它的位置,并指示 html-webpack-plugin 将所有脚本标签压入生成文件的 body 元素的底部。)模板如下:

<!DOCTYPE html>
<html lang="en">

<head>
  
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title><%= htmlWebpackPlugin.options.title %></title>
</head>

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

</html>
 

更多信息可以在这里找到:

关于javascript - react - Uncaught Error : Target container is not a DOM element,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47161515/

相关文章:

javascript - Three.js 添加多个几何体

javascript - 如何将选中的复选框和单选框的值存储在本地存储中

javascript - 如何在 redux 中更新特定数组项内的单个值

reactjs - 两个 svgo-loader 冲突

javascript - 如何根据身份验证在我的 Reactjs 应用程序中添加 header

javascript - 制作一个简单的 JavaScript slider ,如何向图像添加描述?

javascript - 将原型(prototype)添加到 JavaScript 对象字面量

javascript - Grails在JavaScript中调用application.config值

html - 将 Jenkins 控制台输出作为 HTML 电子邮件发送

html - 导航的父列表项下的子项