使用相对于当前脚本的路径访问文件?(节点.js)

Joh*_*one 1 javascript node.js

我正在尝试启动位于正在运行的应用程序子目录中的视频 onclick。如果我提供整个路径,我可以轻松地做到这一点:“C:\Users\App”或其他任何内容,但希望能够指向视频,无论视频存储在哪里。如果用户将应用程序安装在文件夹中除了默认位置,视频会丢失。

'..\videos\video.mp4' 似乎不起作用?

sam*_*ime 5

这完全取决于您打开文件的方式(您使用的是什么功能)。通常,如果它看起来不是绝对路径(从C:\Windows 或/Linux/Mac 开始),许多人会将其解析为当前工作目录。

您给出的示例路径实际上是..在开始时使用的,因此它上升了一个级别。如果你的文件夹结构是这样的:

  • 脚本.js
  • 视频
    • 视频.mp4

然后你想使用./videos/video.mp4(不是那个.)。

您还可以使用path.resolve('./videos/video.mp4')基于当前工作目录将相对路径转换为绝对路径。

请注意,当前工作目录是您启动它的目录,而不是它所在的目录。即,如果您在文件夹中C:\Programs并键入node myProgram/script.js当前工作目录将是C:\Programs,而不是C:\Programs\myProgram(您的脚本所在的位置)。

在这种情况下,我更喜欢使用__dirname,它总是指它所在文件的绝对文件路径,结合path.join()创建同一文件夹中某些内容的路径。

例如:path.join(__dirname, 'videos/video.mp4')将始终解析为类似C:\Programs\myProgram\videos\video.mp4(假设脚本文件在 中C:\Programs\myProgram)。

这可能是最可靠的方法。您还console.log()可以查看路径以查看尝试调用的示例,并相应地进行调整。