You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署Apache Superset遇npm构建失败问题求助

Docker部署Apache Superset构建失败修复指南

错误核心分析

构建过程中webpack抛出1个致命错误和406个警告,致命错误直接导致构建终止:

ERROR in packages/superset-ui-demo/storybook/shared/components/ResizableChartDemo.tsx:22:35
import/no-unresolved: Unable to resolve path to module '@storybook/types'.

React Hooks警告属于代码规范问题,不影响构建成功,可按需修复。

修复步骤

1. 解决@storybook/types依赖缺失问题

该错误来自superset-ui-demo包的storybook组件,分两种场景处理:

  • 不需要demo内容(推荐):修改Dockerfile中的BUILD_CMD,仅编译核心Superset代码,跳过demo包:
    npm run build:superset
    
  • 需要保留demo包:在Dockerfile的依赖安装步骤后添加命令,安装缺失依赖:
    RUN npm install @storybook/types --save-dev
    
    注意:需保证该包版本与项目中storybook其他依赖版本兼容。

2. 按需修复React Hooks警告

修复useMemo复杂依赖警告

原代码中useMemo依赖数组使用JSON.stringify(data),需提取为单独变量以通过静态检查:

// 原代码
const memoizedData = useMemo(() => {
  return Object.entries(data).reduce(/* ... */, {} as { [key in string]: string });
}, [JSON.stringify(data)]);

// 修改后
const dataString = JSON.stringify(data);
const memoizedData = useMemo(() => {
  return Object.entries(data).reduce(/* ... */, {} as { [key in string]: string });
}, [dataString]);

修复useEffect缺失依赖警告

找到TimeGrainFilterPlugin.tsx第87行的useEffect:

  • 优先补全缺失的依赖项,确保Hook逻辑的正确性;
  • 若确认部分依赖无需加入数组,可添加ESLint注释忽略警告(仅在无副作用风险时使用):
    useEffect(() => {
      // 原有逻辑
    }, [/* 现有依赖 */]); // eslint-disable-next-line react-hooks/exhaustive-deps
    

验证修复

重新执行Docker构建命令,确认webpack编译无致命错误,构建流程正常完成。

内容的提问来源于stack exchange,提问作者신예진

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 05:48:19