【问题标题】:ReactDom is not defined with react and webpackReactDom 没有用 react 和 webpack 定义
【发布时间】:2023-03-27 15:23:01
【问题描述】:

我已经按照这个简单的教程 (http://jslog.com/2014/10/02/react-with-webpack-part-1/) 开始使用 React 和 webpack,但是在尝试使用更新的语法时遇到了问题。即使用 ReactDom 调用 render 而不是已弃用的 'React.renderComponent'。

我已经跑了:

npm install --save react-dom

并添加

var ReactDom = require('react-dom')

到 index.jsx 文件并添加

'react-dom': 'ReactDom'

到 webpack.config.js 中的“外部”列表。 (我不确定这是否有必要。)

但是我得到了 javascript 错误 ReactDom is not defined。

webpack.config.js:

module.exports = {
entry: './index.jsx',
output: {
    filename: 'bundle.js', //this is the default name, so you can skip it
    //at this directory our bundle file will be available
    //make sure port 8090 is used when launching webpack-dev-server
    publicPath: 'http://localhost:8090/assets'
},
module: {
    loaders: [
        {
            //tell webpack to use jsx-loader for all *.jsx files
            test: /\.jsx$/,
            loader: 'jsx-loader?insertPragma=React.DOM&harmony'
        }
    ]
},
externals: {
    //don't bundle the 'react' npm package with our bundle.js
    //but get it from a global 'React' variable
    'react': 'React'
},
resolve: {
    extensions: ['', '.js', '.jsx']
}
}

【问题讨论】:

  • Mike 请尝试选择一个问题标题来描述您的问题,并且其他人可以使用 google 或 bing 找到类似问题的问题
  • 一切看起来都很好。应该管用。您不需要外部设备。您能否也添加您的 webpack 配置?

标签: javascript reactjs webpack


【解决方案1】:

如果那是您代码的精确副本,那么我认为您错误地引用了 ReactDOM - DOM 中的所有字母都需要大写,如下所示:

var ReactDOM = require('react-dom');

在你的 webpack.config.js 外部:

'react-dom': 'ReactDOM'

请注意,在设置外部时,Webpack 期望您单独加载这些库。例如,通过在您的 HTML (index.html) 中放置一个脚本标记,指向 CDN 的 react 和 react-dom 或这两个库的内部副本。所以,这也可能是您遇到问题的原因。

如果您想使用节点模块附带的 React 和 ReactDOM 版本,请忽略 Webpack 的 externals 设置。它会将 React 和 ReactDOM 与您自己的脚本捆绑在一起(使 bundle.js 更长),但它会起作用。据我所知,还有其他几种处理方式(例如使用 Express 从节点模块中公开相关文件),但似乎很多人只是将它们捆绑在一起。

【讨论】:

  • 谢谢,会调查的!
  • 我添加了一些关于外部的更多信息,以防您的问题存在。
  • 这个也可以"react-dom": 'React.__SECRET_DOM_DO_NOT_USE_OR_YOU_WILL_BE_FIRED',
猜你喜欢
  • 2021-02-24
  • 1970-01-01
  • 2018-10-02
  • 2018-03-26
  • 2017-01-04
  • 1970-01-01
  • 2017-10-30
  • 2016-05-03
  • 2016-11-12
相关资源
最近更新 更多