それで...
私は問題に直面しています...
不変違反: 要素の型が無効です: 文字列 (組み込みコンポーネントの場合) またはクラス/関数 (複合コンポーネントの場合) が必要ですが、オブジェクトを取得しました。
...そして、「エクスポートのデフォルト」に関して同じ応答を複数回見つけました。私の問題の解決策が、TypeScript のコンパイル、ECMA バージョンの互換性などに関する単純なものであることを願っていますが、どんな助けも大歓迎です。
tsconfig.json
{
"compilerOptions": {
"jsx": "react",
"outDir": "dist"
},
"include": [
"src/**/*"
]
}
「ターゲット」を指定していないことに気付いたので、tsc のデフォルトは「es3」であり、これが下位互換性に最適であると考えました。「es5」にアップデートしようとしましたが、問題は解決しませんでした。
server.ts
this.app.set("views", path.join(__dirname, "views"))
this.app.set("view engine", "js")
var engines = require('consolidate')
this.app.engine('js', engines.react)
tsconfig.json の「jsx」プロパティに「react」を指定しているため、コンパイルされたファイルは .js になりますが、React.createElement などの呼び出しが含まれているため、JS ファイルに高速ビュー エンジンを指定しています。統合プロジェクトの反応エンジンを使用します。以前はexpress-react-viewsを使用していましたが、ここでの戦略に関する情報は役に立ちます。
index.tsx
import * as React from 'react'
interface HelloMessageProps {
name: string
}
class HelloMessage extends React.Component<HelloMessageProps, {}> {
render() {
return <div>Hello {this.props.name}!</div>;
}
}
index.ts
// ...
// routing code
// ...
let options: Object = {
"name": "World"
};
res.render("index", options);
...どんな助けでも大歓迎です!