假设我有两个文件,dir/a.js并且lib/b.js
a.js:
b = require('../lib/b');
b.someFn();
Run Code Online (Sandbox Code Playgroud)
b.js:
var fallback = "./config.json";
module.exports = {
someFn = function(jsonFile) {
console.log(require(jsonFile || fallback);
}
}
Run Code Online (Sandbox Code Playgroud)
b.js这个例子的全部目的是读取一个json文件,所以我可以称之为b.someFn("path/to/file.json").
但我希望有一个默认值,如配置文件.但是默认的应该是相对于a.js而不是b.js.换句话说,我应该可以打电话b.someFn()给a.js它,它应该说,"既然你没有把我的路径传给我,我会假设一条默认路径config.json." 但是默认应该是相对的a.js,即应该是,dir/config.json而不是 lib/config.json,如果我这样做,我会得到require(jsonFile).
我可以得到cwd,但只有从内部启动脚本才会有效dir/.
有没有办法b.js说,在里面someFn(),"给我一个__dirname叫我的功能?"
Lau*_*rin 32
使用callsite,然后:
b.js:
var path = require('path'),
callsite = require('callsite');
module.exports = {
someFn: function () {
var stack = callsite(),
requester = stack[1].getFileName();
console.log(path.dirname(requester));
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4500 次 |
| 最近记录: |