【问题标题】:Import React component from Git submodule repository从 Git 子模块存储库导入 React 组件
【发布时间】:2020-03-11 09:52:35
【问题描述】:

我有一个用 React 开发的父仓库,里面有一个子模块(也是由 react 开发的):

项目文件夹结构如下:

parent 
  /.git
  /nodemodule
  /src
  /subModules/childProject
     /.git
     /src
       /js
         /x.jsx //  i want this file from parent project
     /...
  /...

我想访问和使用父项目中的x.jsx 组件。我在我的父项目中导入了它:

import X from '../subModules/childProject/src/js/x.jsx'

但它给了我unexpected token

   7 |   return (
>  8 |     <article className="center">
     |     ^
   9 |       this is test global component with in child Project
  10 |     </article>
  11 |   )

看起来它无法转换它,因为我只是用旧的 JavaScript 方式编写了一个测试函数,例如:

export default function test(x) {
  return x * 2
}

它导入时没有任何错误并且可以正常工作,但是当我以如下箭头样式编写函数时:

export default function test(x) => x * 2

它不起作用。似乎只是转译模块的运行时错误,如何将子模块中的反应组件转译和导入到父存储库中?

【问题讨论】:

  • 我们需要更多信息,您是否使用了create-react-app?你用的是什么版本?似乎你只需要一个 .babelrc 文件

标签: javascript reactjs git git-submodules


【解决方案1】:

问题是babel不知道项目根目录下有子模块项目,只要把我的.babelrc文件改成babel.config.js,配置babelrcRoots就可以了解决问题:

现在我的babel.config.js 文件如下所示:

module.exports = {
  "presets": [
    "@babel/preset-react",
    "@babel/preset-env"
  ],
  "plugins": [
    "@babel/plugin-proposal-class-properties",
    "@babel/plugin-proposal-object-rest-spread"
  ],
  "babelrcRoots": [ "./", "./subModules/someFolder" ]
}

现在我可以从我的父项目的子存储库中导入任何反应组件和 JS 模块,并且它可以正常工作。

【讨论】:

  • 我已经尝试在我的 craco.config 中包含子模块文件夹到 babelrcroots。 jsx 不会被转换,尽管其他语法(如空点合并表达式)会转换。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-09
  • 1970-01-01
  • 2019-02-16
  • 2011-07-23
  • 1970-01-01
  • 2015-09-25
  • 2012-09-20
相关资源
最近更新 更多