同时 使用path.join
和path.resolve
和__dirname
来解析Node.js中的绝对路径是否有区别?
这样使用时,是否应该首选其中之一(绝对路径分辨率为用例的90%)?
即
const absolutePath = path.join(__dirname, some, dir);
与
const absolutePath = path.resolve(__dirname, some, dir);
两种方法都将路径标准化。
这不是 该问题的重复项,因为接受的答案是错误的。
是的,功能之间存在差异,但是在这种情况下,您使用它们的方式将产生相同的结果。
path.join
通过将两个路径合并在一起来返回规范化路径。它可以返回绝对路径,但不一定总是这样。
例如:
path.join('app/libs/oauth', '/../ssl')
决心 app/libs/ssl
path.resolve
另一方面,将解析为绝对路径。
例如,当您运行时:
path.resolve('bar', '/foo');
返回的路径将是/foo
因为这是可以构造的第一个绝对路径。
但是,如果您运行:
path.resolve('/bar/bae', '/foo', 'test');
返回的路径将/foo/test
再次出现,因为那是可以从右到左形成的第一个绝对路径。
如果未提供指定根目录的路径,则给该resolve
函数的路径将附加到当前工作目录中。因此,如果您的工作目录为/home/mark/project/
:
path.resolve('test', 'directory', '../back');
决心
/home/mark/project/test/back
使用__dirname
是包含源文件的目录的绝对路径。当您使用path.resolve
或时path.join
,如果您在下面给出相同的路径,它们将返回相同的结果__dirname
。在这种情况下,这实际上只是一个偏好问题。
本文向大家介绍使用JavaScript实现node.js中的path.join方法,包括了使用JavaScript实现node.js中的path.join方法的使用技巧和注意事项,需要的朋友参考一下 Node.JS中的 path.join 非常方便,能直接按相对或绝对合并路径,使用: path.join([path1], [path2], [...]),有时侯前端也需要这种方法,如何实现呢? 其实
问题内容: 以下调用之间有区别吗? 与 应该首选哪一个? 问题答案: 这两个函数以截然不同的方式处理段。只会将它与前一个参数连接起来,但是会将其视为根目录,并忽略所有先前的路径- 将其视为与每个参数一起执行的结果: 要注意的另一件事是,它将始终产生绝对URL,并且将使用您的工作目录作为解析此路径的基础。但是,无论如何,这都是一条绝对路径,这对您而言并不重要。 对于您应该使用哪一个,答案是:这取决于
问题内容: 众所周知,Windows使用带反斜杠的路径,而Unix使用带反斜杠的路径。node.js提供了始终使用正确的斜杠。因此,例如,您不必编写Unix,而只编写Unix 。 但是,似乎存在这种差异,但是如果您不对路径进行规范化(例如,使用path.join),而仅编写诸如node.js之类的路径,则在Windows上运行脚本没有问题。 那么,有没有写上任何好处了?无论平台如何,两者似乎都可以
问题内容: 从节点手册中,我可以使用来获得文件的目录,但是从REPL中,这似乎是未定义的。这是我的误解还是错误在哪里? 问题答案: 仅在脚本中定义。在REPL中不可用。 尝试制作脚本 并运行它: 您将看到打印。 添加了背景说明:表示“此脚本的目录”。在REPL中,您没有脚本。因此,将没有任何实际意义。
问题内容: 我在运行节点应用程序时使用该标志以使用ES6模块。 但是,当我使用此标志时,该元变量不可用。是否存在另一种方法来获取与该模式兼容的存储在其中的相同字符串? 问题答案: 从Node.js 10.12开始,有一种替代方案,不需要跨平台创建多个文件并处理文件名中的特殊字符:
问题内容: 在Node.js中编程并引用与当前目录相关的文件时,是否有任何理由使用变量而不是常规变量?到目前为止,我一直在代码中使用./,并且发现了./的存在,并且本质上是想知道将./转换为该代码是否明智,如果是这样,那为什么会是一个明智的主意。 问题答案: 在Node.js中,始终是当前正在执行的脚本所在的目录(请参阅参考资料)。所以,如果你键入到,该值会。 相比之下,使用诸如和的库时,会在终端