SO ...打字稿2,阵营JS和Express服务器端渲染问题
我遇到了问题...
不变违规:元素类型无效:预期的字符串(对于内置组件)或类/函数(对于复合组件),但得到:object。
...并且我已经找到多次关于“导出默认值”的相同response。希望我的问题的解决方案是简单的关于我的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”属性,我的编译后的文件将.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);
...任何帮助深表感谢!