为了账号安全,请及时绑定邮箱和手机立即绑定

如何在包里 获取引用用这个包的文件的 路径?

如何在包里 获取引用用这个包的文件的 路径?

慕斯709654 2019-04-16 16:46:04
比如这里有个npmpackagetest它的主函数是lib/index.jsexports.say=->console.log("依赖引用我的文件是??")//怎么获取?process.cwd()肯定是不行的,因为引用这个包的文件不一定是入口函数。这里有个demo.coffee,引用了test包,并且调用了它的say方法test=require'test'test.say()在say函数里面是否可以获取的到demo.coffee的文件路径?则个demo.coffee不是入口函数
查看完整描述

2 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

你这种很明显用OO写比较好,因为test可能会被无数个模块依赖,要输出对应不同的信息,就需要保存这些信息,然后把消息传递到lib/index.js里。
lib/index.js该写成这样(为了省事我写成ES6的class,iojs1.04可以用node--harmony-classesapp.js来启动)
javascript"usestrict";
classTest{
constructor(dir){
this.dir=dir;
}
say(){
console.log(this.dir);
}
}
module.exports=function(dir){
returnnewTest(dir);
};
然后使用的时候就可以写了
javascript//demo.js
vartest=require("test")(__filename);
test.say();
javascript//入口app.js
require("./demo.js");
这样做的好处是你在编写lib/index.js文件的时候,任何方法都可以用到this.dir这个变量,而这个变量是通过实例化来保证每个文件都不同的。
而且,在你模块开始的时候就调用一次vartest=require("test")(__filename);之后,由于node.js会把模块自动缓存下来,所以你不用担心单个文件会多次实例化Test。
在这之后你就可以随意调用test的各种方法了。
                            
查看完整回答
反对 回复 2019-04-16
  • 2 回答
  • 0 关注
  • 298 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信