与Lerna一起使用React

时间:2018-05-04 16:44:06

标签: javascript reactjs create-react-app lerna

我正在尝试使用Lerna和React建立一个概念验证。

这是存储库:

https://github.com/SeanPlusPlus/lerna-react

到目前为止,如果你运行它,上面的工作原理:

git clone git@github.com:SeanPlusPlus/lerna-react.git
cd lerna-react
lerna bootstrap
cd packages/app
yarn start

packages/app/src/App.js我导入并呈现Headline组件(请注意,我使用create-react-app创建此目录):

import React, { Component } from 'react';
import logo from './logo.svg';
import Headline from 'headline';
import './App.css';

class App extends Component {
  render() {
    return (
      <div className="App">
        <header className="App-header">
          <img src={logo} className="App-logo" alt="logo" />
          <h1 className="App-title">Welcome to React</h1>
        </header>
        { Headline }
      </div>
    );
  }
}

export default App;

Headline中的packages/headline/index.jsx组件正在使用React.createElement函数:

import React from 'react';

// const Headline = () => (
//   <h1>Hello Lerna + React</h1>
// )

const Headline = React.createElement('div', null,
  React.createElement('h1', null, 'Hello Lerna')
)

export default Headline

而且,正如您所看到的,返回JSX的函数已被注释掉。

...现在......如果我更新此文件以返回JSX:

import React from 'react';

const Headline = () => (
  <h1>Hello Lerna + React</h1>
)

export default Headline

我的应用返回此错误:

Failed to compile.

../headline/index.jsx
Module parse failed: Unexpected token (4:2)
You may need an appropriate loader to handle this file type.
|
| const Headline = () => (
|   <h1>Hello Lerna + React</h1>
| )    

如何从Headline组件导出JSX?

1 个答案:

答案 0 :(得分:0)

知道了!

https://github.com/SeanPlusPlus/lerna-react/tree/react-babel

我需要安装babel并编译我的headline组件。