Javascript babel loader jsx语法错误:意外标记
我是React+网页包的初学者 我在hello world web应用程序中发现了一个奇怪的错误 我在webpack中使用babel loader来帮助我将jsx转换为js,但babel似乎不理解jsx语法 以下是我的依赖项:Javascript babel loader jsx语法错误:意外标记,javascript,reactjs,webpack,babeljs,Javascript,Reactjs,Webpack,Babeljs,我是React+网页包的初学者 我在hello world web应用程序中发现了一个奇怪的错误 我在webpack中使用babel loader来帮助我将jsx转换为js,但babel似乎不理解jsx语法 以下是我的依赖项: "devDependencies": { "babel-core": "^6.0.14", "babel-loader": "^6.0.0", "webpack": "^1.12.2", "webpack-dev-server": "^1.12.1" },
"devDependencies": {
"babel-core": "^6.0.14",
"babel-loader": "^6.0.0",
"webpack": "^1.12.2",
"webpack-dev-server": "^1.12.1"
},
"dependencies": {
"react": "^0.14.1"
}
这是我的webpack.config.js
var path = require('path');
module.exports = {
entry: ['webpack/hot/dev-server',path.resolve(__dirname, 'app/main.js')],
output: {
path: path.resolve(__dirname, 'build'),
filename: 'bundle.js'
},
module: {
loaders: [
{ test: /\.js$/, exclude: /node_modules/, loader: "babel-loader"}
]
}
};
var React = require("react");
React.render(<h1>hello world</h1>,document.getElementById("app"));
var getConfig = require('hjs-webpack')
module.exports = getConfig({
in: 'src/index.js',
out: 'public',
clearBeforeBuild: true,
https: process.argv.indexOf('--https') !== -1
})
这是我的app/main.js
var path = require('path');
module.exports = {
entry: ['webpack/hot/dev-server',path.resolve(__dirname, 'app/main.js')],
output: {
path: path.resolve(__dirname, 'build'),
filename: 'bundle.js'
},
module: {
loaders: [
{ test: /\.js$/, exclude: /node_modules/, loader: "babel-loader"}
]
}
};
var React = require("react");
React.render(<h1>hello world</h1>,document.getElementById("app"));
var getConfig = require('hjs-webpack')
module.exports = getConfig({
in: 'src/index.js',
out: 'public',
clearBeforeBuild: true,
https: process.argv.indexOf('--https') !== -1
})
var React=require(“React”);
render(helloworld,document.getElementById(“app”);
这是错误信息
ERROR in ./app/main.js
Module build failed: SyntaxError: ~/**/app/main.js: Unexpected token (2:13)
1 | var React = require("react");
> 2 | React.render(<h1>hello world</h1>,document.getElementById("app"));
| ^
at Parser.pp.raise (~/**/node_modules/babylon/lib/parser/location.js:24:13)
./app/main.js中的错误
模块生成失败:语法错误:~/**/app/main.js:意外令牌(2:13)
1 | var React=要求(“React”);
>2 | React.render(helloworld,document.getElementById(“app”));
| ^
在Parser.pp.raise(~/**/node\u modules/babylon/lib/Parser/location.js:24:13)
谢谢你们。添加“巴贝尔预设反应”
并将“预设”选项添加到webpack.config.js中的babel loader
(也可以将其添加到.babelrc或package.js:)
下面是一个示例webpack.config.js:
{
test: /\.jsx?$/, // Match both .js and .jsx files
exclude: /node_modules/,
loader: "babel",
query:
{
presets:['react']
}
}
最近发布了巴别塔6,有一个重大变化:
如果使用的是react 0.14,则应使用react.render()
(来自require('react-dom')
)而不是react.render()
:
2018年更新
Rule.query已被弃用,取而代之的是Rule.options。第4页的用法如下:
npm install babel-loader babel-preset-react
然后在网页包配置中(作为module.exports对象中module.rules数组中的条目)
添加“巴别塔预设反应”
并将“预设”选项添加到webpack.config.js中的babel loader
(也可以将其添加到.babelrc或package.js:)
下面是一个示例webpack.config.js:
{
test: /\.jsx?$/, // Match both .js and .jsx files
exclude: /node_modules/,
loader: "babel",
query:
{
presets:['react']
}
}
最近发布了巴别塔6,有一个重大变化:
如果使用的是react 0.14,则应使用react.render()
(来自require('react-dom')
)而不是react.render()
:
2018年更新
Rule.query已被弃用,取而代之的是Rule.options。第4页的用法如下:
npm install babel-loader babel-preset-react
然后在网页包配置中(作为module.exports对象中module.rules数组中的条目)
因为上面的答案仍然是未知的,所以完整的webpack.config.js可能是这样的:
var path=require('path');
变量配置={
条目:path.resolve(uu dirname,'app/main.js'),
输出:{
path:path.resolve(uu dirname,'build'),
文件名:“bundle.js”
},
模块:{
装载机:[{
测试:/\.jsx?$/,,
加载器:“巴贝尔”,
查询:
{
预设:['es2015','react']
}
}]
},
};
module.exports=config代码>因为上面的答案仍然是未知的,所以完整的webpack.config.js可能是这样的:
var path=require('path');
变量配置={
条目:path.resolve(uu dirname,'app/main.js'),
输出:{
path:path.resolve(uu dirname,'build'),
文件名:“bundle.js”
},
模块:{
装载机:[{
测试:/\.jsx?$/,,
加载器:“巴贝尔”,
查询:
{
预设:['es2015','react']
}
}]
},
};
module.exports=config代码>从巴别塔5迁移到巴别塔6时,我遇到了类似的问题
我只是运行babel来编译src到lib文件夹babel-src--out-dir-lib
我将分享我的babel 6设置:
确保已安装以下babel 6devDependencies
"babel-core": "^6.7.6",
"babel-loader": "^6.2.4",
"babel-preset-es2015": "^6.6.0",
"babel-preset-react": "^6.5.0",
"babel-preset-stage-0": "^6.5.0"
将您的.babelrc文件添加到项目中:
{
"presets": ["es2015", "stage-0", "react"]
}
从Babel5迁移到Babel6时,我遇到了类似的问题
我只是运行babel来编译src到lib文件夹babel-src--out-dir-lib
我将分享我的babel 6设置:
确保已安装以下babel 6devDependencies
"babel-core": "^6.7.6",
"babel-loader": "^6.2.4",
"babel-preset-es2015": "^6.6.0",
"babel-preset-react": "^6.5.0",
"babel-preset-stage-0": "^6.5.0"
将您的.babelrc文件添加到项目中:
{
"presets": ["es2015", "stage-0", "react"]
}
以下方法帮助了我(包括react hot、babel loaders和es2015、react预设):
以下方法帮助了我(包括react hot、babel loaders和es2015、react预设):
你可以在这里找到由Henrik Joreteg(ampersandjs)制作的非常好的样板文件:
然后在webpack.config.js中
var path = require('path');
module.exports = {
entry: ['webpack/hot/dev-server',path.resolve(__dirname, 'app/main.js')],
output: {
path: path.resolve(__dirname, 'build'),
filename: 'bundle.js'
},
module: {
loaders: [
{ test: /\.js$/, exclude: /node_modules/, loader: "babel-loader"}
]
}
};
var React = require("react");
React.render(<h1>hello world</h1>,document.getElementById("app"));
var getConfig = require('hjs-webpack')
module.exports = getConfig({
in: 'src/index.js',
out: 'public',
clearBeforeBuild: true,
https: process.argv.indexOf('--https') !== -1
})
你可以在这里找到由Henrik Joreteg(ampersandjs)制作的非常好的样板文件:
然后在webpack.config.js中
var path = require('path');
module.exports = {
entry: ['webpack/hot/dev-server',path.resolve(__dirname, 'app/main.js')],
output: {
path: path.resolve(__dirname, 'build'),
filename: 'bundle.js'
},
module: {
loaders: [
{ test: /\.js$/, exclude: /node_modules/, loader: "babel-loader"}
]
}
};
var React = require("react");
React.render(<h1>hello world</h1>,document.getElementById("app"));
var getConfig = require('hjs-webpack')
module.exports = getConfig({
in: 'src/index.js',
out: 'public',
clearBeforeBuild: true,
https: process.argv.indexOf('--https') !== -1
})
对我来说,解决方案是创建包含以下内容的文件.babelrc
:
{
"presets": ["react", "es2015", "stage-1"]
}
对我来说,解决方案是创建包含以下内容的文件.babelrc
:
{
"presets": ["react", "es2015", "stage-1"]
}
对于那个些可能仍然面临添加jsx来测试的问题的人,我已经修复了这个问题
test: /\.jsx?$/,
对于那个些可能仍然面临添加jsx来测试的问题的人,我已经修复了这个问题
test: /\.jsx?$/,
这对我来说非常合适
{
test: /\.(js|jsx)$/,
loader: 'babel-loader',
exclude: /node_modules/,
query: {
presets: ['es2015','react']
}
},
这对我来说非常合适
{
test: /\.(js|jsx)$/,
loader: 'babel-loader',
exclude: /node_modules/,
query: {
presets: ['es2015','react']
}
},
后面的逗号看起来有点奇怪……对于react的新版本,请使用新的babel模块:。它有更好的错误消息并支持react的新功能。
后面的逗号看起来有点奇怪…对于react的新版本,请使用新的babel模块:。它有更好的错误消息,并支持react的新功能。另一个问题,如果我想在将来使用ES6语法,我应该安装babel-preset-es2015,并以同样的方式在配置文件中执行一些选项吗?你知道了<代码>预设:['es2015','react']
我正试图遵循这一点,但仍然得到错误。你能发布一个完整的package.json和webpack.config.js,main.js“hello world”吗?@dranxo我不知道为什么,但似乎顺序很重要:预设:['es2015','react']我正在用预设进行尝试:['react','es2015'],但它失败了另一个问题,如果我想在将来使用ES6语法,s