node.js - 从 Node 中的模块加载特定文件

标签 node.js git unit-testing npm

我写了一个模块,simpledblayer-mongo .模块依赖 simpledblayer (它提供了特定于 DB 的功能)。

我在单元测试方面遇到问题。这里的问题是:

  • simpledblayer-mongosimpledblayer 获取测试列表(test.js 文件)
  • 使用 GIT 很容易在 simpledblayer-mongo 中定义一个“子模块”。并确保子模块放置在 node_modules 下。因此,包含所有测试的文件将位于 node_modules/simpledblayer/tests
  • 使用 NPM,我定义 simpledblayer作为 devDependency .没有真正的需要,因为 simpledblayer simpledblayer-mongo 需要无论如何,作为直接依赖

  • 我遇到的问题是:用户可能从 GIT(模块将保证在 node_modules/simpledblayer 中)或 NPM(模块可能放在 node_modules 中,或者实际上可能是重复数据删除/等)获取模块。它可能在任何地方,真的)。

    我需要加载 simpledblayertest.js文件,无论它在哪里(只要 simpledblayer 本身作为模块是必需的)。无论模块的路径是什么,有关从模块获取特定文件的任何提示?

    谢谢!

    默克。

    最佳答案

    您可以使用 require.resolve() 返回 main 的绝对路径您传入的模块名称的属性值(来自模块的 package.json)。从那里,您可以使用 path/fs帮助找到正确路径的模块,相对于 require.resolve() 返回的绝对路径.

    所以如果 simpledblayermain: 'index.js'在其 package.json 中,require.resolve('simpledbplayer')可能会返回类似 /home/foo/project/node_modules/simpledblayer/index.js 的内容.

    关于node.js - 从 Node 中的模块加载特定文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28007530/

    相关文章:

    git - 我应该 git clone 我的依赖项吗?

    visual-studio - Visual Studio 中单元测试的组织

    javascript - Mockjax 在同一个测试文件中两次?

    javascript - 文件未加载 - 无法获取/

    javascript - 如何使用 sinon 模块模拟 axios 请求

    json - 使用 Node.js 将 URL/路径转换为 ​​Json

    git - 我们可以在分支上创建一个空提交而不切换到它吗

    git - 在本地主机上托管一个 git 服务器

    c# - 伪造 IDbSet<T> 并支持异步操作

    javascript - 与 Node y Express 约会 Mongodb