You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NestJS使用fs.unlink删除文件报错Cannot read property 'unlink' of undefined如何解决

NestJS项目调用Node.js fs模块报错解决方案

问题复现

在NestJS项目中使用fs模块执行文件删除操作,初始代码如下:

import fs from 'fs';
// 其他业务逻辑省略
@Delete(':fileName')
async deleteFile(@Param('fileName') fileName: string) {
  await fs.unlink(`../../uploads/${fileName}`, (err) => {
    if (err) {
      console.error(err);
      return err;
    }
  });
}

运行代码后抛出如下错误:

Cannot read property 'unlink' of undefined

问题根因

Node.js内置的fs模块是CommonJS规范的模块,没有提供默认导出(default export),使用import fs from 'fs'默认导入的写法拿到的fs对象为undefined,调用其下的方法自然会抛出属性不存在的错误。

解决方案

修改fs模块的导入语句,使用命名空间导入所有导出成员即可:

import * as fs from 'fs';

补充优化建议

当前代码中使用的fs.unlink是回调风格的API,搭配await使用不会生效,建议改用Promise版本的API,写法更简洁,也能匹配async/await的异步写法:

import * as fs from 'fs/promises';
// 方法内部写法
async deleteFile(@Param('fileName') fileName: string) {
  try {
    await fs.unlink(`../../uploads/${fileName}`);
  } catch (err) {
    console.error(err);
    throw err;
  }
}

内容的提问来源于stack exchange,提问作者Charlie Martinez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 01:45:00