CNode

问一个关于方法执行者文件路径的问题

问答
LLayGit发布于12 年前最后回复12 年前9 回复5066 浏览0 收藏

**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)

B
bnuhero#1·12 年前

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

L
LayGit#2·12 年前
引用 bnuhero为什么你不想用参数传递的方法?

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

W
waksana#3·12 年前

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

L
LayGit#4·12 年前
引用 waksanab.js: exports.test = function() { console.log(module.parent.filename); }; 不过我觉得这样不太好把。。

@waksana 等会试试

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

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

I
ijse#7·12 年前

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

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

H
hainee#8·12 年前

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

A
alsotang#9·12 年前

传参好

参与回复
登录后即可参与回复。登录