gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 12:12:12 25 4
gpt4 key购买 nike

我写了一个模块,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/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com