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

标签 javascript node.js

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

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

最佳答案

这完全取决于您打开文件的方式(您正在使用什么功能)。一般来说,如果它看起来不是绝对路径(在 Windows 上以 C:\ 开头,在 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() 路径查看它尝试调用的示例,并进行相应调整。

关于javascript - 使用相对于当前脚本的路径访问文件? ( Node .js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46474915/

相关文章:

javascript - 如何从嵌套对象的数组中删除元素? (lodash)

node.js - Node Body Parser 和 cookie parser 有什么作用?我应该使用它们吗?

ajax - 如何一次测试/发送多个(假)ajax 请求到(node.js)服务器?

javascript - 在nodejs中为oracledb提交后释放连接的正确方法是什么

node.js - 分析我的 NodeJS 服务器显示它挂起......但是如何找出原因?

javascript - Greasemonkey 的隐藏功能

javascript - ColdFusion 处理 AJAX JSON 数据

javascript - 迭代生成器的更简单方法?

javascript - 我的 Node js 的顺序对我处理 server.js 的方式有影响吗?

javascript - backbone.js 上下文中的依赖注入(inject)