【发布时间】:2013-08-09 10:44:10
【问题描述】:
假设我有两个文件,dir/a.js 和 lib/b.js
a.js:
b = require('../lib/b');
b.someFn();
b.js:
var fallback = "./config.json";
module.exports = {
someFn = function(jsonFile) {
console.log(require(jsonFile || fallback);
}
}
这个例子中b.js的全部目的是读取一个json文件,所以我可以称它为b.someFn("path/to/file.json")。
但我希望有一个默认值,例如配置文件。但默认值应该是相对于 a.js 而不是 b.js。换句话说,我应该能够从a.js 调用b.someFn(),它应该说,“既然你没有把路径传递给我,我将假设一个默认路径config.json。”但是默认值应该是相对于a.js,即应该是dir/config.json 而不是 lib/config.json,如果我这样做require(jsonFile),我会得到。
我可以获得cwd,但这只有在我从dir/ 中启动脚本时才有效。
b.js 有什么办法可以在someFn() 内部说“给我调用我的函数的__dirname?”
【问题讨论】:
-
可以修改
b模块吗? -
是的,我拥有
b,没问题。实际上,b正在变成一个模块,我只是希望它能够拥有一个相对于调用者的默认文件。 -
然后简单的设置使用a.js所在的目录。查看答案。
标签: node.js