Angular使用readdir读取文件报fs_1.statSync is not a function如何解决
你的实现思路本身不符合前端浏览器的运行规则,是错误的。fs是Node.js专属的服务端文件系统模块,只能在Node.js运行环境下调用。浏览器受安全沙箱限制,不允许前端代码直接读取本地磁盘的任意目录内容,也根本没有提供对应的fs相关API。
你之前在package.json里加的"fs": false配置,只是让webpack打包时跳过了fs模块不存在的校验,并没有真正解决运行时缺少fs模块的问题,所以后续调用statSync方法时自然会报不存在的错误。你安装的readdir包同样是服务端Node.js生态的工具,完全无法在前端浏览器环境运行。
正确的实现方案如下:
你已经有运行在http://localhost:54111/的后端服务,完全可以把读取文件列表的逻辑放到后端实现:
- 先删除
package.json中新增的browser配置,卸载readdir依赖,同时去掉前端代码里所有readdir相关的导入和调用逻辑 - 在后端服务新增一个接口,逻辑为读取你指定的
Reports目录下所有后缀为.repx的报表文件,把文件名列表组装成数组返回 - 前端在
ngOnInit生命周期中,发送HTTP请求调用该后端接口,拿到返回的报表名称列表后,赋值给下拉框绑定的data变量即可完成下拉框加载需求
内容的提问来源于stack exchange,提问作者Ionut
相关产品推荐
相关产品推荐

