Windows环境下执行typechain命令报错:命令未被识别的问题求助
Windows下Uniswap合约类型编译脚本报错的解决思路
问题根源
报错的核心原因是:Windows默认的CMD命令行不支持Bash/Zsh特有的扩展glob语法(比如?(v3-core|v3-periphery)这种分支匹配),同时CMD对单引号的解析逻辑也和类Unix终端不同,导致整个命令被识别为无效指令。
具体解决方法
替换扩展glob为明确路径
把原来的分支匹配路径拆成两个独立的路径,直接指定v3-core和v3-periphery的目录,TypeChain支持同时传入多个路径参数。修改后的脚本如下:"scripts": { "compile-contract-types": "yarn compile-external-abi-types && yarn compile-v3-contract-types", "compile-external-abi-types": "typechain --target ethers-v5 --out-dir src/abis/types \"./src/abis/**/*.json\"", "compile-v3-contract-types": "typechain --target ethers-v5 --out-dir src/types/v3 ./node_modules/@uniswap/v3-core/artifacts/contracts/**/*.json ./node_modules/@uniswap/v3-periphery/artifacts/contracts/**/*.json" }统一使用双引号包裹路径
Windows CMD不识别单引号作为字符串边界,所以把所有路径的单引号替换成双引号,避免路径中的特殊字符被错误解析。切换到PowerShell或WSL运行
如果不想修改脚本,可以直接用PowerShell(支持大部分扩展glob语法)或者Windows Subsystem for Linux(WSL)来执行yarn compile-contract-types命令,类Unix环境的终端能正确解析原脚本中的glob语法。
内容的提问来源于stack exchange,提问作者Software14
相关产品推荐
相关产品推荐

