Gulp + CJSX:解析时出现意外缩进

Gulp + CJSX: Unexpected indentation while parsing

好的,所以我正在尝试使用 React+Coffeescript 并使用 Gulp 来编译它。我不太熟悉 gulp,但我知道它在处理 cjsx 时遇到了麻烦。 (如果我删除我的 render: 方法,它会停止错误)

Gulp文件:

gulp.task('js', function () {
    return browserify({
        entries: [ SRC + 'scripts/index.cjsx' ],
        extensions: ['.cjsx', '.coffee'],
    })
    .bundle()
    .pipe(source('app.min.js'))
    //.pipe(streamify(uglify({ mangle: false })))
    .pipe(gulp.dest(DIST + 'js'))
    .pipe(notify({message: 'JS Complete.'}))
    .pipe(connect.reload());
});

文件抛出解析错误:

React = require 'react'
Header = require 'components/Header.cjsx'
Footer = require 'components/Footer.cjsx'
Store = require 'Store'
Actions = require 'Actions'

Home = React.createClass

  displayName: 'Home'

  getInitialState: ->
    Store.toJSON()

  componentDidMount: ->
    Store.listenTo Store, 'change:counter', this._onChange

  componentWillUnmount: ->
    Store.stopListening Store, 'change:counter', this._onChange

  _onChange: ->
    @setState Store.toJSON()

  render: ->
    return
      <div>
        <Header />
        <h1> HI from React and CJSX </h1>
        <Footer />
      </div>

module.exports = Home

谁能告诉我 gulp 文件有什么问题?我还需要其他 node_module 吗?我知道没有空格问题,我已经检查过了。

您的问题似乎是 return 语句后的换行符。编译器将其视为空 return,render 方法的结尾,然后遇到进一步缩进的代码,它不知道如何处理。

尝试以下操作:

render: ->
  <div>
    <Header />
    <h1> HI from React and CJSX </h1>
    <Footer />
  </div>

或者,如果所有其他方法都失败了,则将所有内容放在一行中。

根据此页面,您的文件似乎没有问题: https://jsdf.github.io/coffee-react-transform/

也许您需要多谈谈您的环境 (gulp) 或 post 错误。