SBe*_*Bel 2 javascript reactjs
我开始学习ReactJS,我正在按照入门书中的说明进行操作.我的目录结构如下所示:
app/App.js
node_modules
index.html
package.json
webpack.config.js
Run Code Online (Sandbox Code Playgroud)
我认为问题的罪魁祸首是来自CLI的此错误消息:
ERROR in ./app/App.js
Module build failed: SyntaxError: c:/code/pro-react/my-app/app/App.js: Unexpected token (6:6)
4 | render() {
5 | return (
> 6 | <h1>Hello World</h1>
| ^
7 | );
8 | }
9 | }
Run Code Online (Sandbox Code Playgroud)
内容App.js是:
import React from 'react';
class Hello extends React.Component {
render() {
return (
<h1>Hello World</h1>
);
}
}
React.render(<Hello />, document.getElementById('root'));
Run Code Online (Sandbox Code Playgroud)
这是以下内容package.json:
{
"name": "my-app",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "node_modules/.bin/webpack-dev-server --progress",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {
"babel-core": "^6.4.5",
"babel-loader": "^6.2.1",
"webpack": "^1.12.11",
"webpack-dev-server": "^1.14.1"
},
"dependencies": {
"react": "^0.14.6"
}
}
Run Code Online (Sandbox Code Playgroud)
而且内容webpack.config.js是:
module.exports = {
entry: __dirname + "/app/App.js",
output: {
path: __dirname,
filename: "bundle.js"
},
module: {
loaders: [{
test: /\.jsx?$/,
loader: 'babel'
}]
}
};
Run Code Online (Sandbox Code Playgroud)
我使用以下命令从CLI启动应用程序:
npm start
Run Code Online (Sandbox Code Playgroud)
当我进入http://localhost:8080Dev Tools时,会出现一条错误消息:
GET http://localhost:8080/bundle.js 404 (Not Found)
Run Code Online (Sandbox Code Playgroud)
但正如我所说,我认为罪魁祸首是它不喜欢语法,因此它不会生成bundle.js文件.请让我知道我做错了什么.
我想这是因为使用的是babel-6没有babel presets,在这种情况下,你需要babel-preset-es2015和babel-preset-react,
# For ES6/ES2015 support
npm install babel-preset-es2015 --save-dev
# Fot JSX support
npm install babel-preset-react --save-dev
Run Code Online (Sandbox Code Playgroud)
然后改变webpack配置
{
test: /\.jsx?$/,
loader: 'babel',
query: {
presets: ['es2015', 'react'],
}
}
Run Code Online (Sandbox Code Playgroud)
或者代替使用query您可以创建.babelrc包含内容的文件
{
"presets": ["es2015", "react"]
}
Run Code Online (Sandbox Code Playgroud)
你还需要安装react-dom和使用ReactDOM.renderinstaed或React.render
| 归档时间: |
|
| 查看次数: |
2033 次 |
| 最近记录: |