Node.js 节点获取所需父文件的路径

Node.js 节点获取所需父文件的路径,node.js,Node.js,我正在编写一个节点模块,需要读取与需要我的模块的文件位于同一目录中的文件 例如,我有app.js,在同一个文件夹中,template.html。 在一些未知目录中是module.js,而app.js需要它 如何阅读module.js中的template.html?请看这里: 您可以从app.js中执行此操作: var path = __dirname + '/template.html'; 然后,您可以通过一些函数或API将此路径发送到module.js 然后您的模块就可以使用此路径。在您的文

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

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

如何阅读
module.js
中的
template.html

请看这里:

您可以从
app.js
中执行此操作:

var path = __dirname + '/template.html';
然后,您可以通过一些函数或API将此路径发送到
module.js


然后您的模块就可以使用此路径。

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

因此,您可以从module.js使用
module.parent.filename.

如果要查找执行的文件路径,则可以在“module.js”中使用
require.main.filename
,诀窍是使用module.parent.

我个人不喜欢使用globals,对于某些文件(如配置或模板),管理modulerequirestack并不难

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');

我不喜欢使用全局变量来处理路径,我得到了spagetti
。/../../dir./s

这个链接似乎在说,\uu dirname实际上不是一个全局的,而是每个模块的局部的。@JacksonGariety然后使用
\uu filename
并做一些修改。
\uu filename
给了我
module.js
的路径,我想让模块来处理这个问题。我从未见过一个模块要求您将当前目录传递给它。@JacksonGariety我从未见过一个模块使用调用模块的路径来查找其他文件。似乎module.parent.filename是由首先需要该模块的文件设置的。如果您在其他任何地方需要该模块,根据我所知,此值将不会更新。
module.parent
似乎已被弃用
require.main.filename
应提供入口点:
    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');