NodeJs与./folderpath与../folderpath之间的区别

我是nodejs中的新手。 我尝试在我的文件系统中使用一些文件。 我想通过一些实际的path让他们。 这里是结构:

-app -resources -tmp -file1 -file2 -common -common.js -etc 

所以,我想从int common文件夹中的common.js文件的resources / tmp文件夹中到达file1和file2。 我用了两条相对path:

 // First , wrong one var tmpfolder = '../resources/tmp'; // Second, good one var tmpfolder = './resources/tmp'; 

文件的绝对path是这样的:

C:\用户\ XY \文件\工作\的NodeJS \项目\ project_wrapper_folder \ project_folder \资源\ tmp目录

如果我login第一个相对path,我得到了这个结果:

C:\用户\ XY \文件\工作\的NodeJS \项目\ project_folder \资源\ tmp目录

这是错误的,因为它不包含包装文件夹。

但是第二个很好。 有人可以解释我的这种行为吗?


UPDATE

我看到“../”的意思,谢谢你的解释!

我已经试过@Lissy答案:“那么记住这一点./将解决你的项目根的价值…”听起来不错,但结果不是。 我在我的应用程序中有这个逻辑:

 var tmpfolder = require('./otherFolder/orhetFile'); 

otherFolder是我的project_folder的子文件夹。 所以,当我在这里使用这个时,我得到一个错误称为无法find模块

但是,如果我在fs模块中使用这个'./',在这里:/ project_folder / otherFolder_2 / otherFile_2就像:

 var path = `./resources/tmp`; fs.mkdirsSync(path); 

有用!

这些对我来说很奇怪。 如果'./'表示当前的文件夹,比上面的例子不能工作(但它的工作原理)。 但是,如果'./'表示项目根目录的path,则带有require的示例应该可以工作(但不起作用)。

对我来说奇怪,是否有一些require或fs的含义?

综上所述

./my-file表示查看根目录,而../my-file表示从当前目录中出来,然后查看父文件夹。

Node.js中相对path和绝对path的说明

默认的文档根目录是使用NODE_PATH环境variables设置的(但是修改该目录会是一个糟糕的做法)。 因此,铭记这一点./将解决你的项目根的价值。

所以let tmpfolder = require('./resources/tmp'); 会parsing为C:\Users\......\project_wrapper_folder\project_folder\resources\tmp如您所见

相对path不以./开头,例如let tmpfolder = require('my-scripts/some-script'); 会在当前目录中查找另一个名为my-scripts文件夹。

从那之后../是相对于当前目录,但出去一(对它的父母),并从那里看起来。 你可以通过执行../../my-dir等两个目录(这是不是很好的做法,因为它可以很难pipe理,如果你有../../../../../../

更好的方法

您可以使用Node中的__dirname常量来查找当前模块的目录名称。 例如fs.readFile(__dirname + '/../foo.bar');

有用的链接

我想你会发现这篇文章更好的本地require()pathNode.js非常有用。

另外,为了进一步阅读,下面是path上的官方Node.js文档

..表示之前的dir。 所以,你要从project_wrapper_folder下载 ,然后添加到脚本dir resources \ tmp ,这样project_wrapper_folder不再处于相对path中。

让我们假设你在一个名为app的文件夹中。

当你使用../resources/tmp ,它会从app文件夹中find并searchtmp resources文件夹。

当你使用./resources/tmp ,它会在resources文件夹和tmp里面的app文件夹中查找。

../指向父目录,而./指向当前工作目录。

一个点基本上是指“走一个文件夹回path”

所以:'./'指向你所在的文件夹(在你的情况下文件夹是普通的)

'../'指向包含您所在文件夹的文件夹(在您的情况下是文件夹应用程序/)