我写了一个模块,simpledblayer-mongo。该模块依赖于simpledblayer(它提供了特定于DB的功能)。
我遇到单元测试问题。这里的问题是:
simpledblayer-mongo
从simpledblayer
获取测试列表(test.js
文件)simpledblayer-mongo
中,并确保子模块位于node_modules下。因此,包含所有测试的文件将位于node_modules / simpledblayer / tests simpledblayer
定义为devDependency
。没有实际需要,因为simpledblayer
需要simpledblayer-mongo
,而不是直接依赖我遇到的问题是:用户可能从GIT获取模块(模块将保证在node_modules / simpledblayer中)或NPM(模块可能放在node_modules中,或者实际上可能被重复删除/等等,它可能在任何地方,真的。)
我需要加载simpledblayer
test.js
个文件,无论是否在哪里(只要simpledblayer
本身是必需的,一个模块)。有关从模块获取特定文件的任何提示,无论模块的路径是什么?
谢谢!
Merc的。
答案 0 :(得分:2)
您可以使用require.resolve()
返回传递的模块名称的main
属性值(来自模块的package.json)的绝对路径。从那里,您可以使用{{ 1}} / path
模块,相对于fs
返回的绝对路径,帮助到达正确的路径。
因此,如果require.resolve()
的package.json中包含simpledblayer
,main: 'index.js'
可能会返回require.resolve('simpledbplayer')
之类的内容。