React v18项目频繁出现EBUSY错误求助,已尝试多种方案无效
解决React v18项目中频繁出现的EBUSY错误(C:\DumpStack.log.tmp资源锁定)
问题背景
在React v18项目中每隔15秒触发一次EBUSY错误,错误指向C:\DumpStack.log.tmp文件资源被占用或锁定,已尝试禁用杀毒软件、清除npm缓存、删除node_modules、更新依赖等方法均无效,错误详情如下:
node:events:492 throw er; // Unhandled 'error' event ^ Error: EBUSY: resource busy or locked, lstat 'C:\DumpStack.log.tmp' Emitted 'error' event on FSWatcher instance at: at FSWatcher._handleError (C:\Users<project_path>\node_modules\chokidar\index.js:647:10) at NodeFsHandler._boundHandleError (C:\Users<project_path>\node_modules\chokidar\lib\nodefs-handler.js:303:43) at ReaddirpStream.emit (node:events:514:28) at emitErrorNT (node:internal/streams/destroy:151:8) at emitErrorCloseNT (node:internal/streams/destroy:116:3) at process.processTicksAndRejections (node:internal/process/task_queues:82:21) { errno: -4082, code: 'EBUSY', syscall: 'lstat', path: 'C:\DumpStack.log.tmp' }
解决方案
1. 让文件监控工具忽略系统临时文件
错误源于chokidar(React开发服务器依赖的文件监控工具)尝试访问被系统占用的DumpStack.log.tmp文件,需在开发配置中添加忽略规则:
Create React App未eject场景:
安装react-app-rewired和customize-cra,在项目根目录创建config-overrides.js:const { overrideDevServer } = require('customize-cra'); module.exports = overrideDevServer(config => { config.watchOptions = { ...config.watchOptions, ignored: [/C:\\DumpStack\.log\.tmp$/, /node_modules/] }; return config; });修改
package.json启动命令为"start": "react-app-rewired start"。已eject或自定义Webpack配置场景:
在webpack.config.js的devServer节点下添加:devServer: { // ...其他配置 watchOptions: { ignored: [/C:\\DumpStack\.log\.tmp$/, /node_modules/] } }
2. 停止生成该临时文件的系统服务
DumpStack.log.tmp是Windows错误报告服务生成的临时文件,可通过以下方式停止生成:
- 按下
Win+R输入services.msc打开服务管理器,找到Windows Error Reporting Service,右键选择停止,并将启动类型改为手动或禁用。 - 打开任务管理器,查找
WerFault.exe进程,结束该进程后手动删除C:\DumpStack.log.tmp文件。
3. 切换文件监控的轮询模式
如果忽略规则无效,可强制chokidar使用轮询模式(牺牲少量性能但避免文件锁定问题):
在Webpack的watchOptions中添加poll配置:
watchOptions: { poll: 1000, // 每秒轮询一次 ignored: [/C:\\DumpStack\.log\.tmp$/] }
内容的提问来源于stack exchange,提问作者Nenad Jevtic
相关产品推荐
相关产品推荐

