我有一个网站,我正在运行集成测试,在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目录,但如果你看一个路径,它仍然有混合斜杠...
1条答案
按热度按时间axr492tv1#
来自文件
normalize()方法规范化给定的路径,解析'..'和'.'段。
当找到多个连续的路径段分隔符(例如POSIX上的/和Windows上的\或/)时,它们将被特定于平台的路径段分隔符的单个示例(POSIX上的/和Windows上的\)替换。
在您的情况下
UPLOADED_FILES_LOCATION
应该是(或转换它):因此:
备选方案: