我有类似这段代码:
const access = (filePath: string) => new Promise((resolve) => {
try {
fs.access(filePath, (err) => resolve(err ? {access: false, error: err} : {access: true}));
} catch (err) {
resolve({access: false, error: err});
}
});
const stats = (filePath: string) => new Promise((resolve, reject) => {
fs.stat(filePath, (err, stats) => err ? reject(err) : resolve(stats));
});
然后我在异步“ main”函数中使用它们,例如:
try {
if ((await access(fPath)).access === true) {
const fileStats = await stats(fPath);
...
}
} catch (err) {
console.log(err.message);
}
它在Mac和Linux服务器上按预期工作。但是,同一台Linux服务器具有使用CVFS
的共享挂载卷,并且当用户仅上载自己具有R / W权限的文件时,不会捕获EACCESS错误并使该过程崩溃。
我也曾尝试使用.then
和.catch
来编写它,如果有帮助的话,我也遇到了同样的问题。
有没有人经历过类似的事情?
谢谢!