React 项目无法在 git 子模块中使用节点模块

Posted

技术标签:

【中文标题】React 项目无法在 git 子模块中使用节点模块【英文标题】:React project fails to use node modules in a git submodule 【发布时间】:2020-05-28 13:46:51 【问题描述】:

我有一个 javascript(打字稿)项目,我在反应项目(也是打字稿)中用作 git 子模块。

这一切都很好......直到我在 git 子模块中使用 任何节点模块。例如,我尝试使用节点模块“moment”和“faker”,但我几乎可以肯定它与这些特定的节点模块没有任何关系。

在子模块中导入例如“moment”:

import moment from 'moment';

使用它:

moment().format('DD/MM/YYYY');

运行主反应项目会导致这个错误:

Failed to compile.

./src/project_core/node_modules/moment/moment.js
  Line 5:37:  'define' is not defined  no-undef
  Line 5:50:  'define' is not defined  no-undef

删除moment().format('DD/MM/YYYY'); 即可解决。

如果我只是直接在子模块中运行一些测试并使用例如“时刻”,它总是有效的。我可以使用节点模块。一旦主项目使用了 git 子模块中的节点模块,看起来就会出现问题。

这就是我的 react 项目的样子。如您所见,子模块 project_core 已添加到主项目的 src 文件夹中。

├── build
│   ├── assets
│   └── static
│       ├── css
│       └── js
├── node_modules
├── public
│   └── assets
└── src
    ├── project_core
    │   ├── node_modules
    │   ├── src
    │   └── tests
    ├── ui
    ├── api
    └── utils

我知道...我到处都读到不推荐使用 git 子模块。然而,我只是想尝试使用 git 子模块来从中学习。

【问题讨论】:

【参考方案1】:

看起来你在节点模块中有一个节点模块。这可能会使您的捆绑程序感到困惑并产生导入错误。尝试从项目核心子目录中删除 package.json 和 node_modules 并查看导入是否正常工作。如果您想让您的核心目录成为一个库,请考虑将其作为 npm 依赖项而不是子模块。您仍然可以在依赖项中引用 git commit 哈希。

【讨论】:

以上是关于React 项目无法在 git 子模块中使用节点模块的主要内容,如果未能解决你的问题,请参考以下文章

我可以开发一个节点模块作为 GIT 子模块吗

Git 子模块:git submodule

Git - 子模块

Git 子模块 - submodule

使用git子模块管理项目

git基础教程(36)submodule 子模块的管理和使用