发送html呈现的html作为节点js中的电子邮件正文

时间:2016-10-17 11:41:49

标签: javascript node.js reactjs react-router isomorphic-javascript

我有一个反应应用程序。它有两个页面 - AddStatus和ViewStatus。两者都是反应成分。

我的要求是 - 我必须在特定时间每天发送一封电子邮件,其中包含ViewStatus屏幕中显示的详细信息。

我可以设置node-mailer和node-scheduler来做到这一点。但是我如何从后端渲染ViewStatus组件。我如何获得viewStatus屏幕的HTML。

我尝试在我的server.js中使用ReactDOMServer的renderToString方法,但是收到错误

var App = React.createFactory(require('../ViewStatus'))

var p = ReactDOMServer.renderToString(App());

  Error: locals[0] does not appear to be a `module` object with Hot Module replace
ment API enabled. You should disable react-transform-hmr in production by using
  `env` section in Babel configuration. See the example in README: https://github.
 com/gaearon/react-transform-hmr

我使用的另一种方法是使用react-router,但我不确定如何从后端触发路由。

如何在server.js中获取viewstatus组件的HTML

1 个答案:

答案 0 :(得分:0)

var React = require("react");
var ReactDOMServer = require("react-dom/server");

var MyComponent = React.createClass({
   render: function() {
      return React.DOM.div({}, "Text");
    }
});

var App = React.createFactory(MyComponent)

var html = ReactDOMServer.renderToString(App());

console.log("HTML =\n", html);

输出:

HTML =
 <div data-reactroot="" data-reactid="1" data-react-checksum="-1164111617">Text</div>

对我来说,正如你的错误所说的那样,看起来你对React Hot Loader有问题..你的代码看起来很好。