当我使用'webpack'时,下面的错误....
./app/main中的错误.js模块生成失败:语法错误:意外令牌 (10:18)
8 |
9 | function main(){
> 10 | ReactDOM.render(<Hello />, document.getElementById('app'));
| ^
11 | }
12 | main();
13 |
组件.jsx
<div><i> import React from 'react';
export default class Hello extends React.Component {
render() {
return (<h1>Hello World---component.jsx</h1>)
}
}</i></div>
主.js
import React from 'react';
import ReactDOM from 'react-dom';
import Hello from './component.jsx';
function main(){
ReactDOM.render(<Hello />, document.getElementById('app'));
}
main();
包.json
{
"name": "enviromentproject",
"version": "1.0.0",
"description": "一个用来做环境搭建的项目测试",
"main": "index.js",
"scripts": {
"test": "echo "Error: no test specified" && exit 1",
"build": "webpack",
"dev": "webpack-dev-server --devtool eval --progress --colors --hot --content-base build"
},
"author": "jkwu",
"license": "ISC",
"devDependencies": {
"babel-core": "^6.21.0",
"babel-loader": "^6.2.10",
"babel-plugin-transform-runtime": "^6.15.0",
"babel-preset-es2015": "^6.18.0",
"babel-runtime": "^6.20.0",
"css-loader": "^0.26.1",
"style-loader": "^0.13.1",
"vue-hot-reload-api": "^2.0.7",
"vue-html-loader": "^1.2.3",
"vue-style-loader": "^1.0.0",
"webpack": "^1.14.0"
},
"dependencies": {
"hexo-deployer-git": "^0.2.0",
"react": "^15.4.2",
"react-dom": "^15.4.2",
"webpack-dev-server": "^1.16.2"
}
}
首先,你的component.jsx不应该在html
标签内
简单写入
import React from 'react';
export default class Hello extends React.Component {
render() {
return (<h1>Hello World---component.jsx</h1>)
}
}
其次,更重要的是,确保在 webpack 配置中指定 babel 作为 jsx 的加载器。
module : {
loaders : [
{
test : /.jsx?/,
exclude : /node_modules/,
loader : 'babel'
}
]
}
此外,它不会导致问题,但您无需在函数中调用ReactDOM.render()
class Hello extends React.Component {
render() {
return (<h1>Hello World---component.jsx</h1>)
}
}
ReactDOM.render(<Hello />, document.getElementById('app'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.8/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.8/react-dom.min.js"></script>
<div id="app"></div>
添加"babel-preset-react"
npm install babel-preset-react并将"预设"选项添加到 webpack.config 中的 babel-loader 中.js
(或者你可以把它添加到你的.babelrc或包.js:http://babeljs.io/docs/usage/babelrc/)
下面是一个示例 webpack.config.js:
{
test: /.jsx?$/, // Match both .js and .jsx files
exclude: /node_modules/,
loader: "babel",
query:
{
presets:['react']
}
}
然后:npm install react-dom --save在主.js从 'react-dom' 导入 { 渲染 }
;使用此渲染