私は browserify-rails + babelifyを使用して、react + rails プロジェクトで jsx をトランスパイルしています。
jsxトランスパイルが機能するために(reactのマウントポイントである)// require('');
が必要な理由に非常に困惑しています。components.js
コメント行を削除する // require('');
と、「SyntaxError: Unexpected token import」が表示されます
現在、コメント行がトランスパイルに影響を与える理由について、私には手がかりがありません。これがreact、babelify、browserify、browserify-rails、またはrailsアセットパイプラインの問題なのかについても困惑しています。
完全なコード ベースについては、 https://github.com/sidazhou/react_rails_skeleton/tree/v0.0.1を参照してください。
components.js
// require(''); // somehow this is necessary, why?! Otherwise we get: "SyntaxError: Unexpected token import"
import React from 'react';
import ReactDOM from 'react-dom';
import Widgets from './components/Widgets.jsx';
ReactDOM.render( <Widgets />, document.getElementById('react_component') );
パッケージ.json
{
"name": "react-sample",
"dependencies": {
"babel-preset-es2015": "^6.3.13",
"babel-preset-react": "^6.3.13",
"babelify": "^7.2.0",
"browserify": "^12.0.1",
"browserify-incremental": "^3.0.1",
"history": "^1.13.1",
"material-ui": "^0.13.4",
"react": "^0.14.3",
"react-dom": "^0.14.3",
"react-router": "^1.0.2",
"react-tap-event-plugin": "^0.2.1"
},
"engines": {
"node": ">= 0.10"
}
}
アプリケーション.rb
config.browserify_rails.commandline_options = "-t [ babelify --presets [ es2015 react ] ]"