我正在尝试使用 Sails.js 和 React 构建一个同构应用程序。客户端部分很容易。但是我遇到了服务器端渲染的问题。
当我尝试使用 React 服务器渲染一个 *.jsx 文件时,我得到了这个:
renderToString(): You must pass a valid ReactElement
我正在使用sailsjs、react 和sails-hook-babel(用于ES6 语法)。
./assets/components/Auth.jsx:
import React from 'react';
export class Auth extends React.Component {
constructor(props) {
super(props);
}
render() {
return (
<div className='auth'>
Very simple element without any logic just for test server-rendering.
</div>
);
}
}
./api/controllers/AuthController.js:
var Auth = require('./../../assets/components/Auth.jsx');
import React from 'react';
module.exports = {
render: function (req, res) {
//var markup = React.renderToString(
// Auth
//); // This throws an error
console.log(Auth); // {__esModule: true, Auth: [Function: Auth]}
//res.view("layout", {app: markup});
}
};
我到处都尝试过 ES5/ES6 语法。每次都会出现错误。在客户端,这个 Auth.jsx 工作正常(我使用 webpack 和 babel-loader)。