Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript babel loader jsx语法错误:意外标记_Javascript_Reactjs_Webpack_Babeljs - Fatal编程技术网

Javascript babel loader 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" },

我是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"
},
"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来编译srclib文件夹
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来编译srclib文件夹
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