如何在 NodeJS 中使用相对路径(参数)获取文件

Posted

技术标签:

【中文标题】如何在 NodeJS 中使用相对路径(参数)获取文件【英文标题】:How to get the file using relative path (argument) in NodeJS 【发布时间】:2020-10-31 09:37:20 【问题描述】:

我想使用myFunction()获取文件

如果用户将相对路径作为函数参数传递,如何获取文件

../somewhere/index.js

import myFunction from "../pathTo/app.js";
    
myFunction("../relative/path/file.txt");

app.js

export const myFunction = (path) => 
   fs.readFile(path); //=> How to get the file here
;

【问题讨论】:

您可以使用__dirname + "/relativ/path" 或类似const path = require('path'); path.resolve(../relative/path/file.txt") 的方式获取绝对路径 【参考方案1】:

假设我们有一个终端执行 node.js 文件并且终端在

/home/user

node.js文件的路径是

/home/user/test

那么我们可以通过两种不同的方式获取文件的相对路径

var path = require("path");

let path1=path.join('__dirname','../relative/path/file.txt');
fs.readFile(path1);
let path2=path.join('./','../relative/path/file.txt');
fs.readFile(path1);

这里 '__dirname' 表示当前正在执行的 node.js 文件所在的实际路径,即

/home/user/test

'./' 表示执行 node.js 文件的路径,即

/home/用户

终端当前所在的路径并执行给定的 node.js 文件

因此

path1 表示相对于包含 node.js 文件的目录的路径

path1='/home/user/test/../relative/path/file.txt'
     = '/home/user/test/relative/path/file.txt'

path2 将表示实际到终端运行位置的路径

path2='/home/user/../relative/path/file.txt'
     ='/home/relative/path/file.txt'

Difference between __dirname and ./ in Node.js

Path Node.js Documentation

【讨论】:

如果我的 app.js 是一个 npm 包,用户可以将 myFunction 导入那里的代码并通过传递那里文件的相对路径来调用该函数。我需要获取文件并处理它。在这种情况下如何获取文件?谢谢 在这种情况下,您可以使用 let actual_path=path.reslove('__dirname') 在 Index.js 文件中,它会为您提供 index.js 文件的实际路径,并且可以将它作为另一个参数传递给 myfunction

以上是关于如何在 NodeJS 中使用相对路径(参数)获取文件的主要内容,如果未能解决你的问题,请参考以下文章

浅谈nodejs文件操作中的相对路径问题

java如何获取文件的相对路径啊?

Nodejs中路径处理模块path如何使用?

如何在nodejs中获取文件夹大小,排除具有glob模式的某些路径?

Nodejs读取文件时相对路径的正确写法(使用fs模块)

如何使用nodejs获取节点docker容器中的主机主目录路径?