执行npm run test:pact时Pact启动失败,路径报错求助
npm run test:pact时Pact启动失败的解决办法 问题现象
执行npm run test:pact时持续触发以下错误:
pact-core@11.1.1: Pact Binary Error: /Users/abc/Documents/Pega
Docs/Code
Bases/studiox-ui-service/packages/core/node_modules/@pact-foundation/pact-core/standalone/darwin-1.88.63/pact/lib/ruby/bin/ruby:
line 14: Docs/Code: No such file or directory
pact-core@11.1.1: Pact exited with code 1.
Pact startup failed; tried calling service 60 times with no result.
环境版本
- node version: 14.20.0
- npm version: 6.14.17
@pact-foundation/pact: "10.0.0-beta.44"
问题原因
项目所在路径包含空格(Pega Docs/Code Bases),Pact的Ruby启动脚本未对带空格的路径做转义处理,导致Shell解析时将空格后的Docs/Code识别为独立的目录/命令,最终找不到对应路径。
解决方案
1. 迁移项目到无空格路径(推荐)
将项目移动到不含空格的目录下,例如把原路径/Users/abc/Documents/Pega Docs/Code Bases/studiox-ui-service修改为/Users/abc/Documents/PegaDocs/CodeBases/studiox-ui-service,之后重新执行npm install和npm run test:pact。
2. 临时修改启动脚本(仅临时测试用)
如果暂时无法迁移项目,可修改Pact的Ruby启动脚本,对路径做引号包裹处理(注意:此方式会修改node_modules内文件,依赖更新后失效):
找到报错提示中的脚本路径/Users/abc/Documents/Pega Docs/Code Bases/studiox-ui-service/packages/core/node_modules/@pact-foundation/pact-core/standalone/darwin-1.88.63/pact/lib/ruby/bin/ruby,打开文件后将第14行涉及路径的代码用双引号包裹。
内容的提问来源于stack exchange,提问作者Prakash Reddy Potlapadu

