我想检查NodeJS中是否存在文件。
我在另一篇文章中看到了这个解决方案:
const tryRequire = (path) => {
try {
return require(`${path}`);
} catch (err) {
return null;
}
};
但这真的是一个很好的解决方案吗?
就我而言,我正在检查很多文件,因此我将导入需要检查的每个文件(很多文件)。我只想知道文件是否存在,并且不导入它。
我该怎么办?
编辑:
我正在详细解释我的问题。
我正在一个Symfony and React项目中。 我是React的新手。
可以在聊天中上传图像。上传图片时,我将其称为Symfony路线。在此路由中,我使用Liip Imagine捆绑包。所以我正在做这样的事情来缓存图像:
public function new(Request $request, SerializerInterface $serializer): Response
{
$rewardImagePath = $this->uploaderHelper->asset($media, 'imageFile');
if($rewardImagePath) {
$cacheImagePath = $this->cacheManager->getBrowserPath($rewardImagePath, 'live_feed_message');
}
}
问题是getBrowserPath函数为我提供了未来缓存文件的URL。但是创建文件需要花费大量时间(有时需要5/10秒)。所以在我前面,我有新的聊天消息,但实际上,服务器上不存在关联的文件。因此它会显示一条没有图像的消息。
由于某些未知原因,如果我正在执行此控制器中的一会儿文件,则会超时,并且永远不会创建该文件。这就是为什么我要在React端检查文件是否存在。
答案 0 :(得分:-1)
您可以尝试:
function doesFileExist(urlToFile) {
var xhr = new XMLHttpRequest();
xhr.open('HEAD', urlToFile, false);
xhr.send();
if (xhr.status == "404") {
return false;
} else {
return true;
}
}