首页 > 解决方案 > React 项目无法在 git 子模块中使用节点模块

问题描述

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

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

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

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 子模块中的节点模块,看起来就会出现问题。

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

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

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

标签: reactjsgittypescriptnode-modulesgit-submodules

解决方案


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


推荐阅读