duc*_*cin 5 javascript reactjs webpack babeljs
我正在尝试运行一个简单的样板来进行 React + Webpack + 热模块替换。但我实际上陷入了 babel/jsx 步骤并需要帮助。我正在关注这篇文章。
目前我有:
webpack.config.js:
module.exports = {
context: __dirname + "/app",
entry: "./app.js",
output: {
filename: "app.js",
path: __dirname + "/dist",
},
module: {
loaders: [
{
test: /\.js$/,
exclude: /node_modules/,
loaders: ["babel-loader"],
}
],
},
}
Run Code Online (Sandbox Code Playgroud)
app/app.js:
import React from "react";
import Greeting from "./greeting";
React.render(
<Greeting name="World"/>,
document.body
);
Run Code Online (Sandbox Code Playgroud)
和app/greetings.js:
import React from "react";
export default React.createClass({
render: function() {
return (
<div className="greeting">
Hello, {this.props.name}!
</div>
);
},
});
Run Code Online (Sandbox Code Playgroud)
这在package.json:
"devDependencies": {
"babel-core": "^6.18.0",
"babel-loader": "^6.2.7",
"webpack": "^1.13.3"
},
"dependencies": {
"react": "^15.3.2"
}
Run Code Online (Sandbox Code Playgroud)
当我在控制台中运行时webpack,正如教程所说,它应该运行 webpack (以及下面的 babel)并捆绑整个应用程序,但它没有 - 相反,它会抛出以下错误:
$ webpack
Hash: 9a56cc72acac2de6f40c
Version: webpack 1.13.3
Time: 543ms
+ 1 hidden modules
ERROR in ./app.js
Module build failed: SyntaxError: C:/Users/abc/Tests/webpack-react-hmr/app/app.js: Unexpected token (7:2)
5 |
6 | React.render(
> 7 | <Greeting name="World"/>,
| ^
8 | document.body
9 | );
10 |
Run Code Online (Sandbox Code Playgroud)
我是这个主题的新手,所以我不知道问题是什么,但可以肯定的是,webpack 无法理解 JSX 语法。也许教程的这一部分是错误的或过时的:
幸运的是,Babel 加载器支持转换 ES2015 和 JSX,这意味着我们可以使用单个加载器,而不需要同时使用 babel-loader 和 jsx-loader。
我们可以使用以下命令安装 babel loader:
Run Code Online (Sandbox Code Playgroud)npm install babel-loader --save-dev
我应该怎么做才能修复 webpack/jsx/babel 设置?
您需要 babel 预设来编译react和其他 ES6、ES7 功能。
所需预设列表:
将此文件添加.babelrc到您的根目录。
{
"presets": ["latest", "react", "stage-0"],
}
Run Code Online (Sandbox Code Playgroud)
并进行安装
npm install --save-dev babel-preset-latest babel-preset-react babel-preset-stage-0
Run Code Online (Sandbox Code Playgroud)
现在,运行 webpack。它应该有效!
| 归档时间: |
|
| 查看次数: |
7290 次 |
| 最近记录: |