NodeJS中fs.cpSync()复制目录出现系统错误求助
问题排查与解决
1. 路径转义错误
你的代码里路径使用了未转义的反斜杠\,在JavaScript字符串中\是转义字符,比如\U会被解析为特殊字符,导致实际路径不符合预期,这是常见的低级错误。
解决方法:
- 使用双反斜杠
\\表示路径分隔符:fs.cpSync("C:\\Users\\User\\f-sync\\src\\test", "C:\\Users\\User\\Pictures", { recursive: true }); - 或者直接用正斜杠
/作为路径分隔符(Node.js支持跨平台识别):fs.cpSync("C:/Users/User/f-sync/src/test", "C:/Users/User/Pictures", { recursive: true });
2. 缺少递归复制配置
Node.js的fs.cpSync默认不会递归复制目录,即便官方描述提到支持整个目录结构复制,也必须显式指定{ recursive: true }选项,否则源为目录时会直接报错。
3. 目标路径逻辑问题
如果目标目录C:\Users\User\Pictures已存在,默认配置下fs.cpSync会把源目录内部的内容复制到目标目录中;如果需要把源目录本身(包括目录名)复制到目标目录下,要调整目标路径为C:\Users\User\Pictures\test,确保目标是一个新的目录名:
fs.cpSync("C:/Users/User/f-sync/src/test", "C:/Users/User/Pictures/test", { recursive: true });
额外检查点
- 确认Node.js版本在v16.7.0及以上(
fs.cpSync从该版本开始稳定支持目录递归复制) - 检查当前进程是否有读取源目录、写入目标目录的权限(比如Windows系统下的用户权限限制)
内容的提问来源于stack exchange,提问作者ObSp
相关产品推荐
相关产品推荐

