2016-12-05 75 views
0

這是gulpfile.js:Browserify未能編譯反應

var gulp = require('gulp'), 
    browserify = require('gulp-browserify'), 
    babel = require('gulp-babel'), 
    babelify = require("babelify"); 

gulp.task('js', function() { 
    gulp.src(config.paths.js.src) 
    .pipe(browserify({ 
     insertGlobals : true, 
     debug : true 
     })) 
    .pipe(gulp.dest(config.paths.js.dest)) 
}); 

在的package.json我已經加入:

"browserify": { 
    "transform": [["babelify", { "presets": ["react"] }]] 
} 

這是與文件反應:

ReactDOM.render(
    <Overlay message="TEST" />, 
    document.getElementById('content') 
); 

最後,錯誤是:

components/main-component.js:15 
      <div class="overlay"> 
      ^
ParseError: Unexpected token 
    at wrapWithPluginError (/home/novak/Documents/myProjects/OpenWorld/node_modules/gulp-browserify/index.js:44:1 

注:我沒有使用ES2015,只是普通的js。

我已經嘗試了很多東西放入吞噬任務,但它總是給我一些錯誤。有人可以告訴我如何做這項工作嗎?

一些更多的來源: 主component.js:

var React = require('react'); 
var ReactDOM = require('react-dom'); 
var Print = require('./main-template'); 

var Overlay = React.createClass({ 
    getInitialState: function() { 
     return { show: false }; 
    }, 
    render: function() { 
     if (!this.state.show) { 
      return; 
     } 
     return(
      <div class="overlay"> 
       <div class="content"> 
        <Print message="{this.props.message}"/> 
       </div> 
      </div> 
     ); 
    } 
}); 

ReactDOM.render(
    <Overlay message="TEST" />, 
    document.getElementById('game-content') 
); 

module.exports = Overlay; 
+0

也許JSX問題......你能告訴'主component.js'的代碼? –

+0

@ oliv37我已添加源文件。 – Mykybo

+0

browserify是狗屎 –

回答

1

您需要.jsx轉換爲.js,因爲瀏覽器不知道JSX。所以你需要先改變它。

步驟隱蔽jsxjs

確保已安裝

  1. gulp-babel
  2. babel-plugin-transform-react-jsx

通過

npm install gulp-babel babel-plugin-transform-react-jsx 

然後在您gulp文件

var gulp = require('gulp'); 
var babel = require('gulp-babel'); 

gulp.task("babel", function(){ 
    return gulp.src("src to jsx/*.jsx"). 
     pipe(babel({ 
      plugins: ['transform-react-jsx'] 
     })). 
     pipe(gulp.dest("src to js/*.js")); 
}); 
+0

我一直希望在一個吞嚥任務內的解決方案。但我使用你提供的代碼片段來工作 - 我將jsx編譯爲js文件,並且在我的代碼中我需要js文件。 – Mykybo

+0

那麼你現在卡在哪裏? –

+0

Gulp編譯它很好,但在瀏覽器中:我得到了'無法解析SourceMap:http:// localhost:8080/socket.io/socket.io.js.map',所以我在谷歌瀏覽器中搜索並禁用了一些設置,現在我得到了:'Uncaught Invariant Violation:_registerComponent(...):目標容器不是DOM元素',但這可能是我的語法錯誤,儘管我沒有看到它(main-component.js文件我發佈) – Mykybo