Node.js - 在不提供整个路径的情况下在app所在的目录中打开文件?

时间:2017-09-28 17:17:59

标签: javascript node.js node-webkit

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

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

1 个答案:

答案 0 :(得分:2)

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

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

  • 的script.js
  • 视频
    • video.mp4

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

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

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

在这种情况下,我更喜欢使用__dirname,它始终引用它所在文件的绝对文件路径,并与path.join()结合以创建同一文件夹中某些内容的路径。 / p>

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

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