Node.js 同构React和JSX-在服务器上将组件呈现为字符串

Node.js 同构React和JSX-在服务器上将组件呈现为字符串,node.js,reactjs,react-jsx,isomorphic-javascript,Node.js,Reactjs,React Jsx,Isomorphic Javascript,在传递到客户端之前,我尝试在服务器上呈现一个非常简单的组件,使用gulp和babelify进行转换,如下所示: gulp.task("react-assessment", function(){ return browserify("./app/assessment/react/components/app.react.js") .transform(babelify) .bundle() .pipe(source("reactBundle.js")) .pi

在传递到客户端之前,我尝试在服务器上呈现一个非常简单的组件,使用gulp和babelify进行转换,如下所示:

gulp.task("react-assessment", function(){
  return browserify("./app/assessment/react/components/app.react.js")
    .transform(babelify)
    .bundle()
    .pipe(source("reactBundle.js"))
    .pipe(gulp.dest("./browser"))
});
该组件在客户端上运行良好:

var React = require("react");
var ReactDOM = require("react-dom");

var Title = React.createClass({
  render: function(){
    return <h1>Hello World</h1> 
  }
});

module.exports = ReactDOM.render(
  <Title/>, 
  document.getElementById("react-assessment")
);

我哪里出错了?

使用babel/register解决。不需要React.DOM

通过使用babel/register解决。不需要React.DOM

是否尝试将require('node-jsx').install({extension:'.jsx'})放在require语句的最顶端?我相信这个模块需要拦截呼叫。。。所以首先要感谢你的评论。我改用了babel/register,因此不再需要节点jsx。您是否尝试将require('node-jsx')。install({extension:'.jsx'})放在require语句的最顶端?我相信这个模块需要拦截呼叫。。。所以首先要感谢你的评论。我使用了babel/register,因此不再需要节点jsx。
return <h1>Hello World</h1> 
           ^
SyntaxError: Unexpected token <
var express = require('express'),
    router = express.Router(),
    ReactDOMServer = require("react-dom/server");  
    JSX = require('node-jsx').install({
      extension: '.jsx'
    }),
    AssessmentComponent = require("../react/components/app.react.jsx");