【发布时间】:2016-05-13 02:17:53
【问题描述】:
我正在使用 webpack 和 babel 将我的 jsx 文件预处理为 javascript。我的配置如下:
Webpack.config.js
module.exports = {
entry: "./react/main.jsx",
output: {
path: __dirname,
filename: "./public/javascripts/app.js"
},
module: {
loaders: [
{
test: /\.jsx?$/,
exclude: /(node_modules|bower_components)/,
loader: 'babel',
query: {
presets: ['react', 'es2015']
}
}
]
}
};
./react.main.jsx
import { render } from 'react-dom'
import HelloWorld from './components/helloworld.jsx'
render(<HelloWorld />,document.body);
./react/components/helloworld.jsx
import React from 'react'
class HelloWorld extends React.Component {
static render() {
return (
<div>
<h1>Hello World!</h1>
<p>This is some text</p>
</div>
);
}
}
export default HelloWorld;
当我运行 webpack 时,我在 app.js 的这一行中不断收到错误 React is not defined
(0, _reactDom.render)(React.createElement(_helloworld2.default, null), document.body);
如果我特别在我的 main.jsx 文件中包含 react 错误就会消失,然后错误是
Uncaught Invariant Violation: _registerComponent(...): Target container is not a DOM element.指向null值作为app.js中React.create element的第二个参数
我确定这是我遗漏或做错的事情,但我不知道是什么。
【问题讨论】:
-
您是否在 node_modules 文件夹中安装了 react ? ( npm install -save 反应)
-
您应该使用 document.getElementById('root') 例如并在您的 html 文件中包含 。如果你这样做,你不应该有错误 Target container is not a DOM
-
当然你还需要在你的main.jsx中导入
React。react-dom也使用react
标签: javascript reactjs ecmascript-6 webpack babeljs