当前位置: 首页 > 面试题库 >

节点js / Express js的相对路径(点或__dirname或没有任何前缀)?

邵祺
2023-03-14
问题内容

我在看的NodeJS / expressjs和看到不同的教程请使用__diranme + "/my_folder""./my_folder"或只"my_folder"

例子:

app.use("/static", express.static(__dirname + "/my_folder"));
app.use("/static", express.static("./my_folder"));
app.use("/static", express.static("my_folder"));

我尝试了所有这些,它们似乎都起作用了。相对路径应该使用哪一个?

我也看过require('./my_file.js')require('my_file')。有区别吗?我应该使用什么?


问题答案:

几乎所有require以文件路径作为参数的函数(除外)都将使用fs模块中的函数读取或写入它们。

fs模块的Node.js文档说:

可以使用文件名的相对路径,但是请记住,该路径将相对于process.cwd()。

当您考虑它时,要使这些功能的行为有所不同,将需要大量技巧。毕竟,fs函数是常规的Javascript,它们对访问者的信息没有特殊的访问权限。__dirname他们唯一可以访问的将是__dirname他们自己的模块(核心fs模块)。

require函数无需明确指定 即可
解析相对于当前路径的事实,__dirname这是因为require该函数对于出现在其中的每个文件都是唯一的。通过这种方式,它可以访问当前模块的详细信息,尤其是其路径。

您的代码正常运行的原因是当前,app.js上面显示的代码(或类似代码)恰好与process.cwd()当前目录位于同一目录中。即,使用node app.js可以启动应用程序,而使用node myappdir/app.js(从其父目录运行)启动应用程序则无效。process.cwd()会有所不同。

只要记住相对路径将通过解析即可process.cwd(),则可以使用较短的语法。在某些情况下,这可能是一个优势。它的确使您的代码取决于如何调用。我个人更喜欢使用__dirname,因为它比正在发生的事情更加透明,并且相对路径与您在require同一文件的语句中使用的路径一致。



 类似资料:
  • 问题内容: 从节点手册中,我可以使用来获得文件的目录,但是从REPL中,这似乎是未定义的。这是我的误解还是错误在哪里? 问题答案: 仅在脚本中定义。在REPL中不可用。 尝试制作脚本 并运行它: 您将看到打印。 添加了背景说明:表示“此脚本的目录”。在REPL中,您没有脚本。因此,将没有任何实际意义。

  • 我是 D3 的新手。因此,我正在尝试呈现一个图形,其中两个或多个孩子可以具有相同的父级。我想知道如何使链接再次定向到同一节点?我有断开的链接.. 任何帮助都是巨大的。 这是我的代码...

  • 我有一个目录如下所示: 我希望我的文件需要。现在我正在使用,但这不起作用。我做错了什么?我希望避免使用。

  • 我试图从绑定到xml的treeview中获取所选节点,其中使用的xml显示了以下特性,重复了许多同名节点 在SseltedNodeChanged函数中我写了: 但每当我单击Treeview节点时,它只选择第一个团队元素。 例如:每当我单击这两个节点,我总是在SseltedNode中获得First Team元素。数据路径 我已经阅读了很多堆栈溢出解决方案,但是我不想在Xpath中传递参数,我想通过从

  • 我面临的挑战是: > 文本节点可以包括具有和定义的TSPAN。创建的路径必须与每个childNode字母(tspans)完美地对齐。 检索文本节点的实际位置数据,以及每个tspan。这就是我遇到麻烦的地方,希望有更多经验的人能帮助我。由于笔画宽度和其他属性会影响定位/bbox值,所以我不确定为文本获取正确定位数据的最有效方法是什么。 textToPaths函数是一个paper函数,它应该循环遍历p

  • 我有一棵看起来像上面的树,由一个链接结构表示: 我的目标是找到从根节点到叶节点的所有路径。 我的树遍历算法如下所示: 当我运行它时,我确信树正在按图所示构建。我已经测试过了。然而,我无法找出我的树遍历分割错误的原因。 我得到的输出是: 我已经在高度较小的树上测试了它,它是有效的。但是出于某种原因,它不适用于高度大于2的树。我认为这是树出了问题,我检查并打印了每个父级、左子级和右子级,它们打印出来如