问一个关于方法执行者文件路径的问题
发布于 10 年前 作者 LayGit 4374 次浏览 最后一次编辑是 8 年前 来自 问答

**a.js 在目录 /home/test/a.js **

var b = require("../lib/b.js");
b.test();

b.js 在目录 /home/lib/b.js

export.test = function(){
// 在这里我需要知道a.js的路径,怎么解决?
//  尝试过 new Error() 里面解析栈信息 可是得到的是 module.js 并不能够得到此方法调用者  a.js 的真实路径
}

现在我只能在 a.js 中取得 __dirname 作为参数传递到b.js 有没有不传参直接获取的方法呢?

9 回复

为什么你不想用参数传递的方法?

@bnuhero 相当于每次入口配置都需要传递 __dirname 我想默认就是这个。

b.js: exports.test = function() { console.log(module.parent.filename); }; 不过我觉得这样不太好把。。

@waksana 等会试试

其实是这样的,类库和项目不再同一个目录。但是类库需要根据项目的配置要求到项目目录下的子目录中读取相应文件,当然我可以传递一个个子目录名称,但是如果我跟类库约定好子目录名称,就不需要配置子目录路径了。

有点绕,不知道能否表达清楚…

@LayGit

类库应该与应用代码保持松散耦合关系,不依赖默认的约定。所以,我个人觉得传递参数的方式更好。

@bnuhero 有道理,就是想多偷懒一点吧 : )

往global里放一个项目根目录,然后约定之下的子目录结构~~

其实还是传参方式比较好。。

艹,能不能不要这样耦合淫家……

回到顶部