运行Metaplex Gumdrop的gumdrop-cli.ts报模块错误如何解决
Metaplex Gumdrop CLI TypeScript编译报错修复方案
报错根因
你遇到的三个编译错误对应两个核心问题:
commander包版本不兼容:v8及更早版本的commander采用默认导出,不支持import { program } from 'commander'的命名导出写法,Gumdrop最新代码依赖v9+版本的commander- 依赖缺失:手动移动Gumdrop目录到Metaplex的packages路径后,没有在对应项目路径下执行完整依赖安装,导致TS找不到
@aws-sdk/client-sesv2、discord.js两个包的类型声明和源码
*额外说明:手动将Gumdrop移动到原Metaplex目录的操作没有必要,Gumdrop是独立维护的monorepo项目,跨项目移动子包反而会破坏workspace的依赖软链接逻辑,反而会引发更多路径引用错误。
分步修复操作
- 先将Gumdrop代码移回独立存放的项目路径,不要放在Metaplex源码的packages目录下。
- 打开终端进入Gumdrop项目根目录,执行全量依赖安装(Metaplex生态默认使用yarn,优先选择yarn执行命令避免依赖冲突):
# 用yarn安装 yarn install # 用npm安装 npm install
- 安装完成后如果仍然报
commander无导出成员的错误,进入cli子包目录手动升级commander到兼容版本:
cd packages/cli yarn add commander@^9.0.0 # npm执行:npm install commander@^9.0.0
- 处理剩余两个依赖缺失报错,根据自身需求二选一即可:
- 如果你需要使用AWS SES邮件推送、Discord机器人相关的空投通知功能,直接在cli目录下安装缺失依赖:
yarn add @aws-sdk/client-sesv2 discord.js # npm执行:npm install @aws-sdk/client-sesv2 discord.js- 如果你不需要上述两个功能,直接打开
packages/cli/tsconfig.json,在compilerOptions配置项中添加"skipLibCheck": true,同时在两个报错的import语句上方添加// @ts-ignore注释跳过类型检查即可。
- 回到项目根目录执行构建,验证CLI可正常运行:
cd ../.. yarn build yarn run cli --help
执行完--help命令如果能正常输出Gumdrop的命令帮助信息,说明修复完成。
常见踩坑处理
如果依赖安装过程中出现报错、或者安装完仍然有类型错误,先清理旧依赖和锁文件后重新安装即可:
# 根目录下执行 rm -rf node_modules packages/*/node_modules yarn.lock package-lock.json yarn install
Windows系统执行上述清理命令可以手动删除对应文件和文件夹,不要使用管理员权限运行终端执行node相关命令,避免权限异常导致依赖安装不完整。
内容的提问来源于stack exchange,提问作者Shady Ayman
相关产品推荐
相关产品推荐

