AI 环境变量 Docker npm 报错排查工具

在线粘贴环境变量、Docker、npm、Node.js 或 CI/CD 报错,使用 AI 分析可能原因、排查步骤、修复建议和安全检查。

功能特点

  • 区分构建阶段、容器启动阶段和运行时环境变量问题
  • 分析 Dockerfile、Compose、npm 依赖和 Node.js 版本相关报错
  • 输出按优先级排列的排查步骤与修复建议
  • 额外检查日志泄露、镜像密钥和不安全配置风险
  • 区分构建期与运行期环境变量,核对 Docker ARG/ENV、CI/CD 注入、Node/npm 版本和容器启动目录

使用方法

  1. 粘贴报错、启动日志或配置现象,并选择问题类型
  2. 补充本地、Docker、CI/CD 或部署平台的运行上下文,并说明变量在哪个阶段读取
  3. 按排查步骤验证构建产物、容器 ENV、版本和启动目录,再应用修复建议并检查安全项

示例输入

  • 环境变量未生效

    Error: process.env.API_URL is undefined
    本地 .env 有值,Docker 部署后变成 undefined。

    适合检查变量注入时机、构建工具前缀、容器 ENV 和启动命令。 结果为说明性的 AI 排查示例,会随环境细节和模型响应变化。

  • npm 依赖安装失败

    npm ERR! code ERESOLVE
    npm ERR! Could not resolve dependency tree

    适合分析 peerDependencies、Node/npm 版本和 lockfile 冲突。 结果为说明性的 AI 排查示例,会随环境细节和模型响应变化。

  • Docker 启动失败

    docker: Error response from daemon: OCI runtime create failed
    container exits with code 1

    适合区分镜像构建问题、入口命令、端口、权限和运行时配置。 结果为说明性的 AI 排查示例,会随环境细节和模型响应变化。

  • 构建期与运行期变量

    VITE_API_URL was undefined in the built JavaScript
    Docker ENV API_URL=https://api.example.com
    Node.js v22.4.1 / npm 10.8.2

    适合区分前端构建时替换的公开变量、容器运行时 ENV、CI/CD 注入和实际启动目录;重新启动容器不会改写已经生成的静态资源。 结果为说明性的 AI 排查示例,会随环境细节和模型响应变化。

示例输出

  • 环境变量未生效

    排查顺序:确认 Docker 运行阶段注入 API_URL;若变量供前端使用,再检查构建工具要求的公开前缀并重新构建镜像。
  • npm 依赖安装失败

    排查顺序:记录 Node/npm 版本,检查冲突包的 peerDependencies,再基于项目 lockfile 选择兼容版本。
  • Docker 启动失败

    排查顺序:查看容器日志和入口命令,确认 /app/dist 产物存在、文件权限正确且启动端口与健康检查一致。
  • 构建期与运行期变量

    排查顺序:先确认 VITE_API_URL 是否在构建时写入静态资源,再分别核对 Docker ENV、CI/CD 注入、Node/npm 版本和容器启动目录。

常见错误

  • 只看本地 .env 文件就认为容器或 CI 一定能读取,实际构建阶段和运行阶段的变量来源不同。
  • 用 npm --force 或关闭 peer dependency 校验掩盖版本冲突,可能把问题推迟到运行时。
  • 把密钥写进 Dockerfile、镜像层或日志,会导致凭据长期留在镜像历史和构建缓存中。
  • 修改配置后不重启开发服务或重新构建镜像,旧进程仍可能使用缓存的环境变量。
  • 前端构建时读取的公开变量和容器运行时注入的秘密不是同一阶段;重新启动容器不会补回已经写入构建产物的错误值。

适用场景

  • 环境变量未生效
  • Docker 启动失败
  • npm install 报错
  • Node.js 版本冲突
  • CI/CD 部署排查
  • 构建产物与运行时配置核对

实操检查

  • 验证输入长度和问题类型

    固定输入:`npm ERR`(少于 10 个字符),问题类型选择 Docker。步骤:提交 AI Environment Debug。预期结果:页面显示“请先粘贴至少 10 个字符的报错、日志或配置现象”,且不会发起 AI 请求。失败判断:短输入被发送,或选择的问题类型被错误地当作 errorText。

  • 验证五段环境排查结果

    固定输入:`Error: process.env.API_URL is undefined Docker build succeeds.`,问题类型选择环境变量。步骤:提交并让流返回含 summary、possibleCauses、troubleshootingSteps、suggestedFixes、securityChecks 的 JSON。预期结果:页面按五个标题展示结果。失败判断:字段顺序或名称不兼容导致空列表,或非结构化响应没有显示安全确认提示。

页面专属核验

使用前与操作中

  • 把 possibleCauses、troubleshootingSteps、suggestedFixes 和 securityChecks 当作候选排查路径,先区分构建期、容器启动期和运行期,再按证据排序。
  • 页面会把 errorText、environment 和 context 发送到 `/api/ai/env-debug`;提交前将 `.env` 值、云凭据、Registry Token、完整 Authorization 和个人信息替换为占位符。
  • 选择环境变量、Docker、npm/Node.js、CI/CD 或混合问题,并补充变量读取阶段;实际核对 Docker `ARG`/`ENV`、CI 注入、Node/npm 版本和启动目录后再采用建议。

结果出来后

  • 模型判断的变量未注入、前缀错误或版本冲突,是否能在目标进程、容器 `ENV`、构建产物和 CI 日志中逐项找到证据?
  • 排查步骤是否能在不改生产配置的隔离环境中复现,并明确区分 `.env` 加载、镜像构建和容器运行时的差异?
  • securityChecks 是否覆盖日志、镜像层、环境变量和仓库中的密钥泄露;输出中是否仍没有出现完整 Token 或真实秘密?

相关工具

  • AI 错误解释:AI 智能解析错误信息并提供排查方向
  • AI 日志分析:分析 Nginx、Node.js、Java、Cloudflare 和 Docker 日志中的错误类型、时间线与排查方向
  • JSON 工具:统一处理 JSON 格式化、校验、树形查看、Schema、CSV 转换、AI 响应分析和 JSON 修复
  • YAML 格式化:格式化、校验 YAML,并支持 YAML 与 JSON 互转
  • 代码格式化:统一格式化和轻量压缩 HTML、CSS、JavaScript 代码

工具边界

  • AI 无法读取本机环境、容器、CI 变量或真实文件系统,只能依据粘贴的文本推断。
  • 缺少运行时版本、启动命令和部署阶段信息时,建议可能无法区分构建期与运行期问题。

与相似工具的区别

  • AI 错误解释:环境调试器围绕 Node、包管理器、Docker 和变量注入给出检查顺序;错误解释器覆盖更广泛的单次异常。

安全与兼容性

  • 配置与日志会发往 AI 服务;必须删除 .env 值、Registry Token、云密钥、私有镜像地址和客户信息。
  • 不要用 --force、关闭证书校验或把密钥写入 Dockerfile 作为最终修复,建议需在隔离环境验证并保留回滚。

下一步排查

  1. 先区分构建期与运行期变量,再分别检查构建命令、容器 ENV、CI/CD 注入和应用启动日志。
  2. 用 YAML 工具核对 Compose 或 CI 配置,用 Code 工具检查 Dockerfile、入口命令和变量引用。
  3. 如果已有明确堆栈或连续日志,转到 AI 错误或 AI 日志分析,并用真实容器、版本和监控结果复核。

常见问题

为什么 Docker 里有变量但前端仍是 undefined?

前端常在构建阶段把公开变量写入静态资源,容器运行时再设置 ENV 不会改写已经生成的 JavaScript;应检查构建命令、变量前缀、镜像产物和部署方式。

Docker ARG 和 ENV 应该怎么区分?

ARG 主要用于构建阶段,通常不应承载秘密;ENV 用于镜像或容器运行时环境。两者的可见范围、覆盖顺序和是否进入镜像层都要结合 Dockerfile 与平台文档核对。

npm 报错应该先升级所有依赖吗?

不建议盲目升级。先记录 Node/npm 版本、lockfile 和 peerDependencies 冲突,选择兼容范围并在隔离分支运行安装、构建和测试。