将 React 与 Lerna 结合使用

IT技术 javascript reactjs create-react-app lerna
2021-04-28 08:21:20

我正在尝试使用 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个回答

知道了!

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

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