gpt4 book ai didi

node.js - 如何在 Angular 7 中创建使用 FS 模块列出目录中文件的服务?

转载 作者:行者123 更新时间:2023-12-03 12:35:07 25 4
gpt4 key购买 nike

我正在编写一个基于 Node v10.13.0、Electron 3.0.7 和 Angular 7 的应用程序。

一个服务负责文件处理,一个名为( listFiles )的函数读取并返回一个包含在目录中的文件名数组。

    listFiles(path):Observable<string[]>{
this.files_in_directories = [];

return of(this.fs.readdir(path, function(err, items) {
if (err) {
console.log(err);
return;
}
for (var i=0; i<items.length; i++) {
this.files_in_directories.push(items[i]);
console.log(items[i]);
}
return this.files_in_directories;
}.bind(this)));
}

我的代码基于 Angular 指南: https://angular.io/tutorial/toh-pt4#observable-heroservice

在组件中,服务被调用:
 ngOnInit() {
this.getScripts('Project');
}

getScripts(project){
this.generalService.listFiles(this.config.location.datastore+'\\'+project).subscribe(files=>{
this.scripts = files;
this.cdref.detectChanges();
});
}

执行此代码时,文件被读取但从不返回,作为 Observable,而不是 未定义 获得值(见图):
Undefined Values Debugger

我有点迷失了如何从这一点开始,目录中的文件已正确列出。 File Listed in console

我相信这个问题来自于在回调中返回数组。有任何想法吗。

最佳答案

@NishKal Kashyap,你是正直的人,在看到你回复之前,我修改了服务中的代码以同步读取目录中的文件。并且工作得很好,谢谢你的建议。

listFiles(path):Observable<string[]>{
this.files_in_directories = [];
this.fs.readdirSync(path).forEach(file => {
this.files_in_directories.push(file);
});

return of(this.files_in_directories);
}

关于node.js - 如何在 Angular 7 中创建使用 FS 模块列出目录中文件的服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53343162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com