Node.js path.join() 忽略参数

Ant*_*tiz 1 node.js

根据文档:

path.join() 方法使用平台特定的分隔符作为分隔符将所有给定的路径段连接在一起,然后规范化结果路径。

零长度路径段将被忽略。如果连接的路径字符串是零长度字符串,则为“.” 将返回,代表当前工作目录。

path.join('/foo', 'bar', 'baz/asdf', 'quux', '..');
// Returns: '/foo/bar/baz/asdf'

path.join('foo', {}, 'bar');
// Throws 'TypeError: Path must be a string. Received {}'
Run Code Online (Sandbox Code Playgroud)

如果任何路径段不是字符串,则会引发 TypeError。

我错过了什么吗?为什么是:

 path.join('/foo', 'bar', 'baz/asdf', 'quux', '..');
    // Returns: '/foo/bar/baz/asdf'
Run Code Online (Sandbox Code Playgroud)

忽略'quux''..'

它们的长度不为零?

甚至在 REPL 中玩过(参见屏幕截图)

在此输入图像描述

小智 6

Path.join 不会忽略最后两个参数。Path.join 接受您输入的参数并以字符串格式输出规范化路径。

所以这里实际发生的是,它正在构建字符串以形成从左到右的路径,/foo/bar/baz/asdf/quux/并且最后一个参数(..)指示 path.join“返回目录”。所以你的最终结果将是:/foo/bar/baz/asdf/