【问题标题】:NodeJS Sub-ModulesNodeJS 子模块
【发布时间】:2017-09-14 09:04:58
【问题描述】:

我有一个节点应用程序,想在子模块(具有自己的依赖项的简单节点模块)中提取一些代码。目前,我不想要单独的 git 存储库或 npm registry entries,而只是在子目录中提供它们。

其中一个模块被命名为core,因为它应该在主节点应用程序以及其他子模块中使用。

假设这是我的结构:

  • 我的项目
    • package.json
    • app.js
    • 核心
      • index.js
      • package.json
    • 合作伙伴
      • index.js
      • package.json

合作伙伴需要核心,app.js 也需要核心。我的方法是执行以下操作:

cd partner
npm install --save ../core
cd ..
npm install --save ./core
npm install --save ./partner
npm install

其中的错误:

npm 错误!代码ENOENT

npm 错误!错误号-2

npm 错误!系统调用重命名

npm 错误! enoent ENOENT:没有这样的文件或目录,重命名 '/home/tjorben/dev/myProject/node_modules/.staging/sliced-fc0a1515' -> '/home/tjorben/dev/myProject/core/node_modules/mquery/node_modules/sliced '

我的目标是,我只需要在基本文件夹 (myProject) 上进行 npm 安装,它还会安装 corepartner 的依赖项。有什么方法可以实现吗?

【问题讨论】:

  • 只需要它们而不是将它们安装为依赖项。 require("../core"); 也许npm link 是另一种选择(我不太了解,但你可以用它测试 CLI)。
  • 但这不意味着我必须分别npm install core 和partner 吗?所以,在myProjectnpm install 还不够吗?
  • 但我会给npm link 一个机会。谢谢。
  • 我重读了你的问题,我想我第一次误解了你。我发布了一个答案来澄清这一点:)

标签: node.js git npm module


【解决方案1】:

您的项目应该只有一个package.json 文件,这意味着只有myProject 文件夹中的一个。您将 myProjectcorepartner 的所有依赖项安装到 package.json 中。

您现在可以通过以下方式要求所有外部依赖项:require("depencency");

它们是用于core 还是partner 或任何其他模块都没有关系。你可以用同样的方式要求它们。

如果您想使用自己的模块,只需使用:require("./core");

请记住使用正确的子模块路径(如partner 子模块中的../core)。

【讨论】:

    猜你喜欢
    • 2016-10-31
    • 2013-06-18
    • 2014-06-29
    • 2021-02-14
    • 1970-01-01
    • 2011-10-18
    • 2015-02-27
    • 2014-06-01
    • 2012-09-03
    相关资源
    最近更新 更多