引入React时Webpack不起作用
Webpack not working when React is introduced
我已经学习了webpack的主要教程,并且已经启动并运行了服务器。当我更改文件时,它会在保存时更新,一切都很好。然而,我后来介绍了React,结果一切都错了。
首先,我在浏览器中得到了这个错误:
Unexpected token <
You may need an appropriate loader to handle this file type.
这指向我的entry.js文件中的第4行:
var CommentBox = React.createClass({
render: function() {
return (
<div className="commentBox">
Hello, world! I am a CommentBox.
</div>
);
}
});
ReactDOM.render(
<CommentBox />,
document.getElementById('content')
);
这是index.html
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<div id ="content"></div>
<script type="text/javascript" src="bundle.js" charset="utf-8"></script>
</body>
</html>
webpack.config.js:
module.exports = {
entry: "./entry.js",
output: {
path: __dirname,
filename: "bundle.js"
},
module: {
loaders: [
{
test: /'.jsx?$/,
loader: 'jsx-loader?insertPragma=React.DOM&harmony'
}
]
},
externals: {
'react': 'React'
},
resolve: {
extensions: ['', '.js', '.jsx']
}
};
如果我将entry.js
文件更改为仅包含:
document.write(require("./content.js"));
它产生了我目前在content.js文件中的内容:
module.exports = "this is working";
因此,这与react/jsx等有关。有人对此有任何解决方案吗?我在网上看到过其他人提出这个问题,但到目前为止,给出的解决方案对我来说并不奏效。
Webpack和jsx-loader
webpack.config.js
module.exports = {
entry: './app.js',
output: {
path: __dirname,
filename: 'bundle.js'
},
module: {
loaders: [{
test: /'.js/,
loader: 'jsx-loader'
}]
}
}
app.js
var React = require('react');
var App = React.createClass({
render: function() {
return <h1>Hello World</h1>
}
})
React.render(<App/>, document.getElementById('app'))
和带有<div>
的简单index.html文件
你可能想使用带有ES6语法的React(React webpack和babel),所以:我希望我的帖子对你有用。
更新:
正如FakeRainBrigand告诉jsx-loader
是去复杂的,如果你想尝试使用babel加载程序而不是jsx-loader
,那就太好了
感谢
就像FakeRainBrigand说jsx-loader
不推荐使用一样,如果你想转换es6或jsx,你可能会想使用babel-loader
。由于Babel 6现在已经发布,您必须通过在.babelrc
文件中设置"预设"来明确声明要执行的转换,如下所示:
$ npm install --save-dev babel-loader
$ npm install --save-dev babel-preset-es2015
$ npm install --save-dev babel-preset-react
{
"presets": ["es2015","react"]
}
webpack.config.js
module: {
loaders: [
{ test: /'.css$/, loader: "style!css" },
{
test: /'.js$/,
loader: 'babel-loader',
exclude: /node_modules/,
query: {
presets: ['es2015']
}
},
{
test: /'.jsx$/,
loader: 'babel-loader',
exclude: /node_modules/,
query: {
presets: ['react']
}
},
]
},
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 监视函数从服务返回不起作用,但作用域函数起作用
- 幻灯片滚动javascript不起作用
- 简单的javascript在Shopify中不起作用
- Recaptcha在IE7和IE8中不起作用
- Ember Data DS.Model's set函数不起作用
- JsFiddle上的鼠标事件不起作用
- webpack-request(jquery)获胜'不起作用
- Webpack 要求不起作用
- 我已经在全球范围内安装了 slush-phaser-webpack,但它不起作用
- Webpack不起作用
- 引入React时Webpack不起作用
- Webpack-dev-server inline标志不起作用
- 导入语法在webpack中不起作用
- Webpack for React不起作用
- Webpack 2 beta +历史API回退不起作用
- 为什么我的Webpack Sass配置不起作用?
- webpack-dev-server 热重载不起作用
- 为什么webpack别名不起作用
- Webpack配置对我的SCSS文件不起作用:(