我今天刚升级到Webpack 2.2,并一直在阅读他们的指南,这些指南似乎仍在进行中。
我在设置应用程序以使用webpack-dev-server和热模块重新加载时遇到了困难。
我通过webpack文档关注的指南在这里,但我不得不修改它以使用开发/生产应用程序。
https://webpack.js.org/guides/hmr-react/
我得到的两个错误如下......
Uncaught Error: _registerComponent(...): Target container is not a DOM element.
at invariant (eval at <anonymous> (index.js:2), <anonymous>:44:15)
at Object._renderNewRootComponent (eval at <anonymous> (index.js:64), <anonymous>:311:44)
at Object._renderSubtreeIntoContainer (eval at <anonymous> (index.js:64), <anonymous>:401:32)
at render (eval at <anonymous> (index.js:64), <anonymous>:422:23)
at hotRenderer (eval at <anonymous> (index.js:73), <anonymous>:41:28)
at eval (eval at <anonymous> (index.js:73), <anonymous>:47:5)
at eval (eval at <anonymous> (index.js:73), <anonymous>:54:5)
at Object.<anonymous> (index.js:73)
at e (index.js:1)
at Object.<anonymous> (index.js:146)
AND
Warning: React.createElement: type is invalid -- expected a string (for built-in components)
or a class/function (for composite components) but got: object.
printWarning @ warning.js?8a56:36
warning @ warning.js?8a56:60
createElement @ ReactElementValidator.js?a599:171
hotRenderer @ index.js?2018:30
(anonymous) @ index.js?2018:35
(anonymous) @ index.js?2018:25
(anonymous) @ index.js:73
e @ index.js:1
(anonymous) @ index.js:146
e @ index.js:1
(anonymous) @ index.js:1
(anonymous) @ index.js:1
我认为问题可能在于我的app文件正在导出一个由Redux Provider包含React路由器路由器组成的组件。
以下是两个罪魁祸首文件:
index.js
import './lib/styles.css'
import React from 'react'
import { render } from 'react-dom'
import App from './App'
if (process.env.NODE_ENV === 'development') {
const { AppContainer } = require('react-hot-loader')
const hotRender = (Component) => {
render(
<AppContainer>
<Component/>
</AppContainer>,
document.getElementById('root')
)
}
hotRender(App)
if (module.hot) {
module.hot.accept('./App', () => {
const NewApp = require('./App').default
hotRender(NewApp)
})
}
} else {
render(App, document.getElementById('app'))
}
App.js
import React from 'react'
import { Provider } from 'react-redux'
import { createStore } from 'redux'
import store from './redux/store'
import { Router, hashHistory } from 'react-router'
import routes from './routes'
let s = createStore(store,
process.env.NODE_ENV === 'development' ? (
window.__REDUX_DEVTOOLS_EXTENSION__ &&
window.__REDUX_DEVTOOLS_EXTENSION__()
) : null
)
const App = () => (
<Provider store={s}>
<Router history={hashHistory} routes={routes} />
</Provider>
)
export default App
如果您想检查具有更改的整个PR,那将是非常棒的!代码位于此处:https://github.com/awitherow/aether/pull/64/files
我为在PR中滑入的一些CSS更改道歉,但是我在这里完成的所有Webpack 2.2及更高版本的升级都与潜在相关!
修改
我尝试了一些修复,简单的修复......但是他们没有解决任何问题。
答案 0 :(得分:7)
您使用的是哪个版本的React Router?我也在控制台中收到Warning: React.createElement
错误,但是从版本3.0.2
切换到4.0.0-alpha.6
预发行版已经为我摆脱了它。
答案 1 :(得分:0)
请查看您尝试在当前组件中导入的组件的导出方式(您可以通过查看堆栈跟踪来识别当前组件,该堆栈跟踪指示发生故障的大致位置)。
我在导入使用&#34;默认&#34;导出的组件时遇到了同样的问题。关键词。由于在许多其他组件中导入了相同的组件,因此反应解析器会发出此错误。从&#34;导出默认值&#34;更改此组件后命名导出(我没有&#34;默认&#34;关键字),我再也没有看到过这个错误。