从节点中的模块加载特定文件

Loading a specific file from a module in node

我写了一个模块,simpledblayer-mongo. The module depends on simpledblayer(它提供了特定于数据库的功能)。

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

我遇到的问题是:用户可能会从 GIT(该模块保证在 node_modules/simpledblayer 中)或 NPM(该模块可能位于 node_modules,或者它实际上可能是 deduped/etc。它可能在任何地方,真的)。

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

谢谢!

雇佣兵

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

因此,如果 simpledblayer 在其 package.json 中包含 main: 'index.js'require.resolve('simpledbplayer') 可能 return 类似于 /home/foo/project/node_modules/simpledblayer/index.js