首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误解析JSX

错误解析JSX
EN

Stack Overflow用户
提问于 2015-11-07 23:33:33
回答 1查看 1.7K关注 0票数 1

我刚开始用gulp和babel在一起。我创建了一个构建任务(下面的简化版本):

代码语言:javascript
复制
var gulp = require('gulp');
var babel = require('gulp-babel');

gulp.task('build', () => {
  return gulp.src('src/components/App.jsx')
    .pipe(babel())
    .pipe(gulp.dest('build'))
});

我的文件src/components/App.jsx看起来像:

代码语言:javascript
复制
/** @jsx React.DOM */

import React, {Component} from 'react';

class App extends Component {
  render() {
    return <div>Example</div>
  }
}

export default App;

我得到的错误是:

代码语言:javascript
复制
events.js:141
      throw er; // Unhandled 'error' event
      ^
SyntaxError: /Users/user/src/components/app.jsx: Unexpected token (8:6)
   6 |   render: () => {
   7 |     return (
>  8 |       <div>Test</div>
     |       ^
   9 |     )
  10 |   }
  11 | });
    at Parser.pp.raise (/Users/user/node_modules/gulp-babel/node_modules/babel-core/node_modules/babylon/lib/parser/location.js:24:13)
    at Parser.pp.unexpected (/Users/user/node_modules/gulp-babel/node_modules/babel-core/node_modules/babylon/lib/parser/util.js:91:8)
    at Parser.pp.parseExprAtom (/Users/user/node_modules/gulp-babel/node_modules/babel-core/node_modules/babylon/lib/parser/expression.js:514:12)
    at Parser.pp.parseExprSubscripts (/Users/user/node_modules/gulp-babel/node_modules/babel-core/node_modules/babylon/lib/parser/expression.js:267:19)
    at Parser.pp.parseMaybeUnary (/Users/user/node_modules/gulp-babel/node_modules/babel-core/node_modules/babylon/lib/parser/expression.js:247:19)
    at Parser.pp.parseExprOps (/Users/user/node_modules/gulp-babel/node_modules/babel-core/node_modules/babylon/lib/parser/expression.js:178:19)
    at Parser.pp.parseMaybeConditional (/Users/user/node_modules/gulp-babel/node_modules/babel-core/node_modules/babylon/lib/parser/expression.js:160:19)
    at Parser.pp.parseMaybeAssign (/Users/user/node_modules/gulp-babel/node_modules/babel-core/node_modules/babylon/lib/parser/expression.js:123:19)
    at Parser.pp.parseParenAndDistinguishExpression (/Users/user/node_modules/gulp-babel/node_modules/babel-core/node_modules/babylon/lib/parser/expression.js:566:26)
    at Parser.pp.parseExprAtom (/Users/user/node_modules/gulp-babel/node_modules/babel-core/node_modules/babylon/lib/parser/expression.js:471:19)

我肯定做错了什么,但我不知道是什么。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-07 23:56:26

Babel从版本6开始,在默认情况下不会做任何事情,您必须提供一组要应用于源代码的变压器。

在您的示例中,您希望同时设置reactes2015转换器预置:

代码语言:javascript
复制
.pipe(babel({
    presets: ['react', 'es2015']
}))

进一步详情:

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33589058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档