首页 > 解决方案 > NestJS 服务返回目录中的所有文件

问题描述

我正在使用 NestJS 中的一项服务来返回工作目录中的所有文件。NestJS 是最新的,我的 Node 安装是 14.12.0。

import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';

import { Observable, of } from 'rxjs';

import * as fs from 'fs';

@Injectable()
export class FileService  {

    constructor(
        private Configuration:ConfigService     // This service is just to set the working directory, where I have files
    ) { }

    public GetFileListing(Directory?:string):Observable<string[]> {
        const Results:Array<string> = new Array<string>();
        

//      fs.readdir(Configuration.DataDirectory, (err, files) => {
        fs.readdir('/c/users/xxx/datafiles/./', (err, files) => {
            files.forEach( file => {
                console.log(file);
                Results.push(file);
            });
        });
        return of(Results);
    }
}

但是,该函数不会读取数据并返回文件列表,而是生成错误:

[ExceptionHandler] Cannot read property 'readdir' of undefined

更改为硬设置路径不起作用,尽管我可以使用 VSCode 中的终端窗口并执行ls /c/users/xxx/datafiles/./并获取我期望的文件列表。

更改为import * as fs from 'fs';摆脱错误。

标签: node.jsnestjs

解决方案


我相信该fs模块使用命名导出而不是默认值,所以你需要做

import * as fs from 'fs';

代替

import fs from 'fs';

推荐阅读