私は同形のJavascriptを初めて使用しています。私はBabelifyと組み合わせてGulpを使用しています。プリセットes2015、stage0を使用しています。エクスプレスサーバーで反応します。要素型が無効です:文字列(組み込みコンポーネント用)またはクラス/関数(複合コンポーネント用)が必要ですが、オブジェクト:
マイ成分、script.js:
var React = require('react');
var ReactDOM = require('react-dom');
export class Son extends React.Component {
render() {
return (
<div>
<h3>Bleh</h3>
<p>
Paragraph 1
</p>
</div>
);
}
}
if(typeof window !== 'undefined') {
ReactDOM.render(
<Son />,
document.getElementById('s1')
);
}
マイ経路、index.js:
let React = require('react');
let ReactDOMServer = require('react-dom/server');
let express = require('express');
let router = express.Router();
import Son from '../public/javascripts/script';
// let Son = require('../public/javascripts/script').default;
console.log(Son);
/* GET home page. */
router.get('/', function(req, res, next) {
let testString = ReactDOMServer.renderToString(<Son />);
res.render('index', {
title: 'Express',
react: testString
});
});
module.exports = router;
ガルプとnodemonはtranspiling /ファインコンパイルの両方です。 Son
のconsole.log出力は、ヌルオブジェクト({}
)を生成しています。ここで問題となるのは、モジュールのエクスポート/インポートです。クラス宣言をコピーしてroutesモジュールに貼り付けると、出力は[Function: Son]
に変更され、アプリケーションは意図したとおりに実行されます。私はモジュールのインポートを扱う方法について他の記事を読んで、すべてのソリューション(従来のes5の構文module.exports =
とrequire(...).default
を含む)を試しましたが、どれも成功しませんでした。とにかく、私がes6を使ってこのコンセプトを適切に釘付けにすることができれば素晴らしいだろう。
私はあなたが提案し何をしようとしたが、ないサイコロ。私は同じフォルダ内のテストファイルからトランスビルドされたモジュールを要求して、いくつかのテストを行いました。私のパスが正しいことを二重に確かめるだけです。私は、その中のすべてのコードが実行されたとしても、反応コンポーネントのコンストラクタがジャンプをしなかったことを発見しました。私は純粋なes5で自分のコンポーネントを書き直してしまい、そのソースからコンパイルされたルートファイルをインポートしました。ゴールデン。何とか輸出を悪化させていることが判明した。 –