Node.js 是否有方法确定节点中符号链接的目标路径? 处境

Node.js 是否有方法确定节点中符号链接的目标路径? 处境,node.js,symlink,fs,symlink-traversal,Node.js,Symlink,Fs,Symlink Traversal,我只是遇到了一个不应该经常发生的奇怪情况,但我想阻止它再次发生 我有一段代码,可以创建源文件夹及其所有子文件夹中所有文件的深入目录列表 一般来说,直到今天,这从来都不是一个问题 我有一个开发伙伴,他不小心将子文件夹的符号链接设置为指向父文件夹。这导致我的深潜再次发生,直到它坠毁 例如: topfolder topfolder/sub1 - real folder topfolder/sub2 - symlink back to topfolder 我的代码读取topfolder中的所有文件,然

我只是遇到了一个不应该经常发生的奇怪情况,但我想阻止它再次发生

我有一段代码,可以创建源文件夹及其所有子文件夹中所有文件的深入目录列表

一般来说,直到今天,这从来都不是一个问题

我有一个开发伙伴,他不小心将子文件夹的符号链接设置为指向父文件夹。这导致我的深潜再次发生,直到它坠毁

例如:

topfolder
topfolder/sub1 - real folder
topfolder/sub2 - symlink back to topfolder
我的代码读取
topfolder
中的所有文件,然后读取
topfolder/sub1
中的所有文件,没有问题。然后,由于
topfolder/sub2
指向
topfolder/sub2
,我读取了
topfolder/sub2
中的所有文件,这些文件与
topfolder/sub2/sub1
中的文件相同,然后是
topfolder/sub2/sub2

我的问题 在node.js中,是否有方法确定符号链接的目标?我想如果我能创建一个我读过的文件夹列表,当运行到上面的符号链接时,我确定目标确实是我已经读过的文件夹,那么我就跳过该文件夹

先谢谢你

在node.js中,是否有方法确定符号链接的目标

对。将返回符号链接的目标(如果是),否则返回错误

fs.readlink("sub2", function(err, destination){
  if(err)
    //sub2 is not a symlink, proceed to go into it
  else if(destination)
    //sub2 is a symlink, check if 'destination' is a folder we have already been through
});

令人惊叹的。谢谢