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

问题描述:

我试图启动位于正在运行的应用程序的子目录中的视频onclick。如果我提供了完整的路径:'C:\ Users \ App'或其他任何内容,我可以很容易地做到这一点,但希望能够指向视频,无论它存储在何处。如果用户将该应用安装到文件夹中除默认位置之外,视频会变成了失踪。Node.js - 在不提供完整路径的情况下在与app相同的目录中打开文件?

” .. \视频\ video.mp4' 似乎并没有工作?

+0

嘿,如果你想做一些相对于你的路径的东西,你可以使用'__dirname +'/ videos/video.mp4'' –

这取决于究竟如何要打开的文件(有什么功能一般来说,如果它不是绝对路径(通常在Windows上为C:\或在Linux/Mac上为/),许多人会将其解析为当前工作目录。

示例路径你给的是真的y在开始时使用..,所以它正在上升一级。如果你的文件夹结构是这样的:

  • 的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()相结合,创造在同一个文件夹的东西路径的绝对文件路径。

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

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