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

ES6导入rimraf模块为函数报错:ReferenceError: rimraf未定义求助

解决rimraf ES6导入后调用报错的问题

看起来你在把CommonJS风格的rimraf调用转为ES6语法时踩了模块导入的坑,我来帮你梳理清楚问题根源和解决办法:

第一步:确认你的环境是否支持ES模块

Node.js默认采用CommonJS模块系统,如果你直接在普通.js文件里使用import语法,Node会把它当作CommonJS模块处理,这时候导入的模块结构会和预期不符,直接调用就会报错。要解决这个,你需要让Node识别你的文件为ES模块:

  • 在项目根目录的package.json中添加"type": "module"字段;
  • 或者把你的脚本文件扩展名改为.mjs(Node会自动将.mjs文件识别为ES模块)。

第二步:使用正确的导入写法

rimraf的CommonJS导出是module.exports = rimraf(也就是导出了一个单一的函数),在ES模块体系中,这种导出会被映射为默认导出。所以正确的导入代码应该是:

import rimraf from "rimraf";

设置好ES模块环境后,再调用rimraf(...)就不会出现ReferenceError了。

如果因为某些限制你无法修改package.json或文件扩展名,也可以用动态导入的方式获取默认导出:

// 注意:动态导入需要在async函数中使用
const { default: rimraf } = await import("rimraf");
rimraf(...);

为什么之前的写法会报错?

  • 当你用import * as rimraf from "rimraf"时,导入的是一个包含所有导出项的对象,rimraf函数实际在rimraf.default属性里,直接调用rimraf(...)相当于调用这个对象,自然会报错;
  • 而如果没配置ES模块环境,import rimraf from "rimraf"会被Node当作CommonJS处理,此时导入的rimraf是一个包含default属性的对象,而非直接的函数,调用也会失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:26:14