Angular - 如何在没有 fs 的情况下检查文件是不是存在
Posted
技术标签:
【中文标题】Angular - 如何在没有 fs 的情况下检查文件是不是存在【英文标题】:Angular - How to check if file exists without fsAngular - 如何在没有 fs 的情况下检查文件是否存在 【发布时间】:2019-04-06 16:39:18 【问题描述】:作为fs
seems not to work anymore since Angular 6
我还没有找到检查文件是否存在的替代方法。
在我的特殊情况下,我必须检查资产文件夹中是否存在特定的图像文件,例如像这样:
if (fileExists('path')) doSomething();
我尝试安装file-exists package,但这使用了
const fs = require('fs')
const path = require('path')
Angular 7 显然不支持。
有人可以帮忙吗?非常感谢。
【问题讨论】:
你可能会向文件发出 GET 请求?! 【参考方案1】:谢谢你,铲屎官。是的,这就是我现在管理它的方式。但我希望有一个更简单的单行函数来检查这一点。
这里是代码(它返回文件夹,而不是文件,所以我可以将它用于更多目的):
getFolder(subFolder: string): Observable<string>
const folderPath = `assets/folder/$subFolder.toLocaleUpperCase()`;
return this.httpClient
.get(`$folderPath/file.png`, observe: 'response', responseType: 'blob' )
.pipe(
map(response =>
return folderPath;
),
catchError(error =>
return of('assets/folder/default');
)
);
【讨论】:
【参考方案2】:这是一个 sn-p,它返回一个布尔值 Observable,用于判断文件是否存在于给定的 URL:
fileExists(url: string): Observable<boolean>
return this.httpClient.get(url)
.pipe(
map(response =>
return true;
),
catchError(error =>
return of(false);
)
);
或者,同样的事情,但采用更简洁的单行格式:
public fileExists(url: string): Observable<boolean>
return this.httpClient.get(url).pipe(map(() => true), catchError(() => of(false)));
【讨论】:
以上是关于Angular - 如何在没有 fs 的情况下检查文件是不是存在的主要内容,如果未能解决你的问题,请参考以下文章
如何在不使用 Angular 的 spyOn 的情况下检查服务中的方法是不是在 Jasmine 单元测试中被调用?