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

React project fails to use node modules in a git submodule

我有一个 Javascript (typescript) 项目,我在 react 项目(也是 typescript)中用作 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'); 即可解决。

如果我只是 运行 直接在子模块中进行一些测试并使用 "moment",它总是有效的。我可以使用节点模块。一旦主项目使用 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 个子模块来从中学习。

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