Azure DevOps流水线执行脚本遇ENOTDIR错误求助
解决Azure DevOps流水线scandir ENOTDIR错误的方案
问题本质
错误Error: ENOTDIR: not a directory, scandir 'D:/a/1/s/EP&T Global/target/cucumber-reports.json'的核心原因:你配置的路径是单个JSON文件,但执行的脚本或插件却试图将其当作目录进行扫描操作。
修复步骤
- 修正插件/脚本的路径配置
若使用Cucumber相关报告插件,多数插件要求填写的是报告文件所在的目录路径,而非单个JSON文件路径。将配置中的D:/a/1/s/EP&T Global/target/cucumber-reports.json替换为D:/a/1/s/EP&T Global/target/。 - 处理路径中的特殊字符与空格
路径包含空格和&符号,可能引发解析异常,可尝试两种解决方式:- 用引号包裹路径:
"D:/a/1/s/EP&T Global/target/" - 改用相对路径:若流水线工作目录为
D:/a/1/s/EP&T Global/,直接使用./target/更可靠
- 用引号包裹路径:
- 验证路径有效性
在扫描步骤前添加命令行任务(PowerShell或Cmd),执行dir "D:/a/1/s/EP&T Global/target/",确认目标目录和JSON文件真实存在,排除拼写错误。 - 排查自定义脚本逻辑
如果是自定义脚本触发的错误,检查代码中是否误将文件路径传入了仅支持目录的扫描方法(比如Node.js的fs.scandir()),调整逻辑为直接读取文件而非扫描目录。
内容的提问来源于stack exchange,提问作者Hiral Pandya
相关产品推荐
相关产品推荐

