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