反应不在 Webpack 开发服务器上呈现

Posted

技术标签:

【中文标题】反应不在 Webpack 开发服务器上呈现【英文标题】:React not rendering on Webpack Dev server 【发布时间】:2017-04-20 13:24:10 【问题描述】:

我有这个工作,不记得我改变了什么,现在页面加载但没有反应呈现到屏幕上。不确定错误在哪里。当我运行 webpack -m 后跟 npm start 时没有发生错误

webapp 文件夹是这样的...

应用 -- App.js 公共 -- 捆绑.js -- index.html webpack.config.js .babelrc package.json

这里是重要文件

网络包

module.exports = 
  entry: './app/App.js',
  output: 
    path: './public',
    filename: 'bundle.js',
  ,
  devServer: 
      inline:true,
      contentBase: './public',
      port: 3333
    ,
  module: 
    loaders: [
      
        test: /\.js$/,
        exclude: /node_modules/,
        loader: 'babel'
      
    ]
  

package.json


  "name": "newaccount",
  "version": "1.0.0",
  "description": "a form submission for new accounts",
  "main": "App.js",
  "scripts": 
    "start": "webpack-dev-server"
  ,
  "author": "---",
  "license": "ISC",
  "dependencies": 
    "react": "^15.4.1",
    "react-dom": "^15.4.1",
    "react-router": "^3.0.0"
  ,
  "devDependencies": 
    "babel-core": "^6.18.2",
    "babel-loader": "^6.2.8",
    "babel-preset-es2015": "^6.18.0",
    "babel-preset-react": "^6.16.0",
    "html-webpack-plugin": "^2.24.1",
    "webpack": "^1.13.3",
    "webpack-dev-server": "^1.16.2"
  

.babelrc


  "presets": [
          "es2015",
          "react"
    ]

App.js

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



class Testing extends Component 
    render() 
        return (
            <div>
                <h3>JUST A TEST</h3>
            </div>
        )
    


ReactDOM.render(<Testing />, document.getElementById('app'));

我曾经尝试过让组件测试成为 ES6 const 之类的......

const Testing = () => return <div><h3>JUST A TEST</h3></div>

仍然无法在 localhost:3333 或我的计算机的完整路径上显示任何内容。

感谢您的帮助

【问题讨论】:

浏览器控制台没有错误? nope 控制台中没有错误 :( 【参考方案1】:

我可以通过做三件事来运行您的示例。

首先,在webpack.config.js 的顶部添加一个HTMLWebpackConfiguration。然后,在/app 中添加一个index.html 页面。最后,确保配置指向 HTML 文件。最终的webpack.config.js 如下所示:

var HtmlWebpackPlugin = require('html-webpack-plugin');
var HTMLWebpackPluginConfig = new HtmlWebpackPlugin(
  template: __dirname + '/app/index.html',
  filename: 'index.html',
  inject: 'body'
);

module.exports = 
  entry: __dirname + '/app/App.js',
  output: 
    path: __dirname + '/public',
    filename: 'bundle.js',
  ,
  plugins: [HTMLWebpackPluginConfig],
  devServer: 
      inline:true,
      contentBase: './public',
      port: 3333
    ,
  module: 
    loaders: [
      
        test: /\.js$/,
        exclude: /node_modules/,
        loader: 'babel'
      
    ]
  

app/index.html 看起来像这样:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>My App</title>
  <link rel="stylesheet" href="styles.css">
</head>
<body>
  <div id="app"></div>
</html>

信息来源:

https://tylermcginnis.com/react-js-tutorial-1-5-utilizing-webpack-and-babel-to-build-a-react-js-app-5f804d729d3b#.f4sslv7ub

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

http://javascriptplayground.com/blog/2016/07/webpack-html-plugin/

【讨论】:

是的,我实际上已经从该教程中制作了这个示例 - 非常有帮助。我希望找到一种方法让我的 localhost 在没有 html-webpack mod 的情况下运行。 我认为唯一可行的方法是如果你有一个 HTML 文件来“启动”你的包。但是,如果您找到任何其他解决方案,请发布 - 我也想知道!【参考方案2】:

我遇到了同样的问题。您可能需要重新访问此解决方案。

在查看webpack-dev-server 文档后,我意识到我需要在 webpack 配置中指定 devServer 属性集合。你已经在你的例子中做到了这一点,这是在我回复之前 7 个月。他们文档中的示例:

devServer: 
  contentBase: path.join(__dirname, "dist"),
  compress: true,
  port: 9000

这解决了我什至没有加载 index.html 的情况(根据浏览器网络调试列表)。

我不需要在任何地方添加HTMLWebpackConfiguration

https://webpack.js.org/configuration/dev-server/

【讨论】:

以上是关于反应不在 Webpack 开发服务器上呈现的主要内容,如果未能解决你的问题,请参考以下文章

如何使用反应路由器 dom v4 配置 webpack 开发服务器?

Webpack 在本地工作,但不在 AWS 服务器上

反应服务器端渲染 - webpack的“样式加载器”失败

使用带有秘密的 github 操作反应应用程序构建/部署

如何将我正在使用 webpack 构建的反应应用程序链接到 phpmyadmin 外部数据库并查询它而不在代码中显示我的数据库密码?

与 Webpack 开发服务器一起使用时,Webpack 不生成包