Apache Superset v1.5.0 docker-compose部署cypress依赖缺失报错
问题根因
这是Apache Superset v1.5.0版本前端构建环节的已知依赖兼容问题,和本地配置修改无关,触发原因共两点:
- v1.5.0版本的前端依赖锁文件未锁定
check-more-types、core-js这类传递依赖的版本,包管理工具安装时会拉取存在兼容性问题的版本,导致cypress安装脚本找不到对应模块文件 - 官方v1.5.0的docker-compose构建流程默认全量安装包含cypress在内的所有前端依赖(含开发依赖),cypress本身是前端E2E测试工具,生产部署阶段完全不需要安装,既拉长构建时间,也额外引入了依赖冲突风险
可行解决方案
方案一:直接使用官方预构建镜像(优先选择,操作成本最低)
无需本地构建node镜像,直接拉取官方构建完成的v1.5.0正式版本镜像,跳过本地前端构建步骤:
# 清理之前构建失败产生的残留容器、镜像和缓存 docker-compose down -v --rmi local # 拉取预构建镜像并启动 TAG=1.5.0 docker-compose -f docker-compose.yml pull TAG=1.5.0 docker-compose -f docker-compose.yml up -d
方案二:调整构建参数跳过cypress安装
如果需要本地自定义构建镜像,执行启动命令前修改构建配置,跳过cypress安装流程:
- 打开本地
docker-compose.yml文件,找到x-superset-build配置段下的args配置项,新增参数:args: CYPRESS_INSTALL_BINARY: "0" - 清理旧构建缓存后重新构建启动:
docker builder prune -f TAG=1.5.0 docker-compose -f docker-compose.yml build --no-cache superset-node TAG=1.5.0 docker-compose -f docker-compose.yml up -d
方案三:锁定依赖版本修复冲突
如果需要保留前端测试能力、不跳过cypress安装,在源码的superset-frontend目录下做如下调整锁定依赖版本:
- 在
package.json的resolutions字段新增配置:"resolutions": { "check-more-types": "2.24.0", "core-js": "3.22.0" } - 重新生成依赖锁文件后,再执行docker-compose构建命令即可。
注意:重新构建前必须清理之前的前端依赖构建缓存,否则残留的损坏依赖文件会导致相同报错重复出现。
内容的提问来源于stack exchange,提问作者uberroot4
相关产品推荐
相关产品推荐

