linux 路径.join和/或路径.normalize创建带混合斜线的路径

uqjltbpv  于 2023-03-07  发布在  Linux
关注(0)|答案(1)|浏览(135)

我有一个网站,我正在运行集成测试,在Linux Docker(Debian)。
在网站的API中,我这样做:

UPLOADED_FILES_LOCATION="C:\Users\username\Documents\uploadedFiles"
const filePath = "folderName/fileName.jpg";
const filePath = path.join(process.env.UPLOADED_FILES_LOCATION!, filePath);
const fileBuffer = await fs.readFileSync(filePath);

但是,我在测试过程中得到这个错误:

Error: ENOENT: no such file or directory, open 'C:\Users\username\Documents\uploadedFiles/folderName\fileName.jpg'

我也试过这样:

const filePath = path.normalize(path.join(process.env.UPLOADED_FILES_LOCATION!, filePath));

就像这样:

const filePath = path.normalize(`${process.env.UPLOADED_FILES_LOCATION!}/${filePath}`);

normalize和path.join不是都应该替换斜线(规范化路径)吗?为什么不起作用?
编辑:我意识到路径是一个Windows目录,但如果你看一个路径,它仍然有混合斜杠...

axr492tv

axr492tv1#

来自文件
normalize()方法规范化给定的路径,解析'..'和'.'段。
当找到多个连续的路径段分隔符(例如POSIX上的/和Windows上的\或/)时,它们将被特定于平台的路径段分隔符的单个示例(POSIX上的/和Windows上的\)替换。
在您的情况下UPLOADED_FILES_LOCATION应该是(或转换它):

UPLOADED_FILES_LOCATION="C:\\Users\\username\\Documents\\uploadedFiles"

因此:

path.normalize('C:\\Users\\username\\Documents\\uploadedFiles/folderName\\fileName.jpg')
// C:\Users\username\Documents\uploadedFiles\folderName\fileName.jpg

备选方案:

相关问题