【问题标题】:metalsmith static site generator (with react jsx)metalsmith 静态站点生成器(带有 react jsx)
【发布时间】:2016-06-02 20:49:59
【问题描述】:

我真的很想使用 reacts jsx 模板/组件创建静态站点生成器。 Jekyll 和中间人必须被黑客入侵才能允许这样做......

但我发现 http://www.metalsmith.io 带有插件:https://github.com/yeojz/metalsmith-react-templates

到目前为止,我一直在关注:

var Metalsmith    = require('metalsmith');
var reactTemplate = require('metalsmith-react-templates');

Metalsmith(__dirname)
  .clean(true)
  .use(reactTemplate({
    directory: 'templates',
    isStatic: true
  }))
  .source('src')
  .destination('build')
  .build(function(err) {
    if (err) throw err;
  });

和jsx文件:

var React = require('react');

var Entry = React.createClass({
  render: function() {

    return ();
  }
});

module.exports = Entry;

当我运行 node build.js 时出错:

entry.jsx: Unexpected token

metalsmith-react-templates 示例似乎已经过时,因此存在问题?

尝试过的建议@:

  4 |   render: function() {
  5 | 
> 6 |     return (<p>Entry</p>);
    |             ^
  7 |   }
  8 | });
  9 | 

【问题讨论】:

  • 删除了我的(错误的)答案。不知何故,JSX 转换错误(特定错误经常发生)。你运行的是哪个版本的节点?
  • @janpieter_z 节点是 v4.2.2。但我相信我对插件 github.com/yeojz/metalsmith-react-templates 做错了
  • return (); 不是有效的 JavaScript。
  • @FelixKling 正确。但它是有效的 JSX 吗?

标签: reactjs babeljs react-jsx jsx metalsmith


【解决方案1】:

@salivan

如果您在执行return (&lt;p&gt;Entry&lt;/p&gt;); 之后仍然遇到问题,则很有可能实际上是babel 编译器的问题。

您使用的是哪个版本的babel

如果是版本 6 及更高版本,请检查您是否至少安装了 babel-preset-reactbabel-preset-es2015 插件。

【讨论】:

  • 是的,这就是问题所在。插件作者帮助我解决了 git 问题。他还添加了 babel-preset-react 和 babel-preset-s2015 作为依赖项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-08-15
  • 2016-06-01
  • 2017-09-21
  • 1970-01-01
  • 2015-07-22
  • 2020-07-08
  • 1970-01-01
相关资源
最近更新 更多