节点获取需要的父文件的path

我正在编写一个节点模块,需要在与需要我的模块的文件相同的目录中读取一个文件。

例如,我有app.js和相同的文件夹template.html 。 在一些未知的目录中是module.jsapp.js需要它。

我怎样才能从module.js读取template.html

在你的文件中你将有一个全局模块(实际上不是全局的),你可以使用module.parent获取父对象,使用module.parent获取文件名,然后你可以提取文件夹

所以从你的module.js你可以使用module.parent.filename. http://nodejs.org/api/modules.html

 p = require('path') template = p.join(p.dirname(module.parent.filename),'template.html') 

如果你正在寻找被执行的文件的path,那么你可以使用require.main.filename

看看这里: http : //nodejs.org/docs/latest/api/globals.html#globals_dirname

你可以在app.js做这个:

 var path = __dirname + '/template.html'; 

然后,您可以通过一些函数或API将此path发送到您的module.js

那么你的模块可以使用这个path。

在“module.js”中,诀窍是使用module.parent。 文件名

我个人不喜欢使用全局variables,对于某些文件(如configuration或模板),pipe理模块要求栈并不那么困难。

module.parent映射到父需求模块(可能是app.js,如你的例子)。

将module.parent.filename与path模块结合起来可以获得一些有用的东西,例如:

  var path = require('path'); var parent_path = path.dirname(module.parent.filename); var parent_relative = path.resolve(path.join(parent_path, '../', 'view')); var template = path.join(parent_path,'./views/template.html'); 

我不喜欢用全局的东西来处理path,我得到了spagetti ../../../dir./s