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

使用npm rimraf删除多目录时遇‘Illegal characters in path’错误求助

解决rimraf执行rimraf **/lib/**报错"Illegal characters in path"的问题

问题详情

使用npm的rimraf工具批量删除目录时触发错误,报错提示:

Error: Illegal characters in path

执行的命令为:
rimraf **/lib/**

完整报错堆栈信息:

> ecommerce.ui@0.7.2 clean-libs
> rimraf **/lib/**

Error: Illegal characters in path.
    at pathArg (C:\Users\SUDARANGA\AppData\Roaming\nvm\v18.9.0\node_modules\rimraf\dist\cjs\src\path-arg.js:45:33)
    at C:\Users\SUDARANGA\AppData\Roaming\nvm\v18.9.0\node_modules\rimraf\dist\cjs\src\index.js:34:66       
    at Array.map (<anonymous>)
    at C:\Users\SUDARANGA\AppData\Roaming\nvm\v18.9.0\node_modules\rimraf\dist\cjs\src\index.js:34:28       
    at main (C:\Users\SUDARANGA\AppData\Roaming\nvm\v18.9.0\node_modules\rimraf\dist\cjs\src\bin.js:134:11) 
    at Object.<anonymous> (C:\Users\SUDARANGA\AppData\Roaming\nvm\v18.9.0\node_modules\rimraf\dist\cjs\src\bin.js:143:5)
    at Module._compile (node:internal/modules/cjs/loader:1119:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1173:10)
    at Module.load (node:internal/modules/cjs/loader:997:32)
    at Module._load (node:internal/modules/cjs/loader:838:12) {
  path: 'C:\\source\\Ecommerce.UI\\**\\lib\\**',
  code: 'EINVAL'
}

问题根源

这是Windows环境下的典型问题:

  1. Windows的CMD、PowerShell默认不识别**这类glob通配符,会直接把**当作路径的一部分传递给rimraf。
  2. rimraf v4及以上版本移除了内置的glob解析功能,不会自动处理**通配符,导致系统判定带**的路径包含非法字符。

解决办法

1. 降级到rimraf v3版本

v3版本自带glob解析能力,无需修改命令即可直接使用:

npm install rimraf@^3 --save-dev

重新执行rimraf **/lib/**即可完成删除操作。

2. 给rimraf v4+搭配glob包

先安装glob依赖:

npm install glob --save-dev

修改package.json中的脚本,通过Node.js解析glob路径后再执行删除:

{
  "scripts": {
    "clean-libs": "node -e \"require('glob').sync('**/lib/**').forEach(f => require('rimraf').sync(f))\""
  }
}

或者直接用命令行执行:

npx glob "**/lib/**" --exec "rimraf {}"

3. 用PowerShell手动解析通配符

如果使用PowerShell,先让它解析出所有目标目录,再传递给rimraf:

rimraf (Get-ChildItem **/lib/** -Directory).FullName

4. 切换到WSL环境

如果条件允许,使用Windows子系统Linux(WSL)执行原命令,Linux的Shell原生支持glob通配符,不会出现该问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 22:40:56