Nodejs获取' required '模块的目录
Nodejs get directory of `required` module
是否可以确定required
脚本来自的目录?
我的最终目标是……
// return the directory where `mysql` module is found
var mysqldir = requiredir('mysql')
if(fs.existsSync(mysqldir+"/README.md")){
console.log(fs.readFileSync(mysqldir+"/README.md").toString())
}
所以我可以有一个方便的参考所有这些模块,希望人们在开明的未来,将包括模块文档/备考表打算以这种方式访问
required.resolve(...)
可能是您正在寻找的:
function requiredir(id) {
return path.dirname(require.resolve(id));
}
虽然,这将遵循main
设置:
> requiredir('grunt')
.../node_modules/grunt/lib/
(更新: API的文档不再可用,所以它的使用可能不支持。)另一个选择可能是使用npm
的view
,尽管这仅限于已注册的包:
npm.load({}, function (err) {
npm.commands.view(['mysql', 'readme'], true, function (err, readme) {
console.log(readme);
});
});
如果你想确定一个模块的绝对路径,你可以使用require.resolve('module')
http://nodejs.org/api/globals.html globals_require_resolve
可以通过正则表达式
如果你想以编程方式知道nodejs使用的模块主目录,这是有效的
require.resolve('module_name').replace(/(.*node_modules.)(.*?)('/)(.*)/, `$1$2`)
<标题> 例子例如,如果你想知道你在nodejs代码中使用的模块jquery
的模块主目录在哪里,第一部分
require.resolve('jquery')
返回(在我的例子中)
/home/jfolpf/autocosts/node_modules/jquery/dist/jquery.js
注意jquery.js
不存储在模块主目录中;然而
require.resolve('jquery').replace(/(.*node_modules.)(.*?)('/)(.*)/, `$1$2`)
返回/home/jfolpf/autocosts/node_modules/jquery
这考虑到要解析模块的路径,node总是递归地寻找名为node_modules
的文件夹,如文档中所示。
相关文章:
- 导出模块 NodeJS 时出现问题
- 如何从NodeJS中的模块返回数组
- nodeJS中的uglify js“;找不到模块“”;
- 如何解压缩NodeJS请求's模块gzip响应体
- Nodejs模块函数返回未定义的,而不是异步的
- Nodejs模块文件和concat
- 将路由处理程序委托给NodeJS+Express中的其他模块
- NodeJS请求模块-http上的body.IncomingMessage
- NodeJS:一个全局EventEmitter或每个模块它'他自己的
- NodeJS 是否重用已经加载的模块并共享其值?
- 如何使用nodejs步行模块将目录遍历到第一级
- 将 NodeJS 模块范围变量作为对象访问
- 从导出的模块返回变量,并在另一个文件(NodeJS)中使用它
- 为什么“exports”在nodejs模块中引用与“this”相同的对象
- 对NodeJS模块开发的怀疑
- NodeJS Semaphore模块:它是如何工作的
- 全局安装的NodeJS npm模块不执行节点的主/bin JavaScript文件
- 如何在nodejs中模块化代码
- 带有参数的模块 NodeJS
- 使用请求模块nodejs下载文件时需要filename