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

Amplify自定义CDK栈构建报错:找不到metro-config类型定义文件

解决Amplify自定义CDK栈构建时TS2688: Cannot find type definition file for 'metro-config'错误

问题原因

Yarn工作区的依赖共享机制会让TypeScript编译器扫描整个工作区内的所有源码和依赖目录,哪怕你的CDK代码没直接引用metro-config,也会因为mobile包(React Native)里的依赖触发类型查找,而Amplify生成的默认tsconfig未限制扫描范围,导致报错。

解决方案

1. 调整CDK目录的tsconfig排除跨包干扰

在自定义CDK栈的tsconfig.json中,添加exclude配置排除mobile包路径,或指定typeRoots仅扫描当前包的类型定义:

{
  "compilerOptions": {
    // 保留Amplify生成的原有配置
    "typeRoots": ["./node_modules/@types"] // 仅使用当前包的@types
  },
  "exclude": [
    "../path-to-mobile-package", // 替换为你的mobile包实际相对路径
    "node_modules",
    "cdk.out"
  ]
}

2. 在CDK目录本地安装类型依赖

即使代码未引用,也可以在CDK栈目录单独安装@types/metro-config,确保TypeScript能找到对应的类型文件:

cd amplify/backend/custom/your-cdk-stack-name
yarn add -D @types/metro-config

3. 限制工作区依赖的全局扫描

在mobile包的package.json中标记该包为私有,并明确依赖范围,避免依赖被工作区全局提升:

{
  "private": true,
  "dependencies": {
    "metro-config": "^0.76.0" // 替换为你实际使用的版本
  },
  "devDependencies": {
    "@types/metro-config": "^0.76.0"
  }
}

之后重新强制安装依赖:

yarn install --force

4. 修改Amplify构建上下文

在项目根目录的amplify.yml中,指定构建仅在web包目录执行,避免扫描mobile包的依赖:

version: 1
frontend:
  phases:
    preBuild:
      commands:
        - cd web # 进入你的Next.js web包目录
        - yarn install
    build:
      commands:
        - yarn run build
  artifacts:
    baseDirectory: web/.next
    files:
      - '**/*'
  cache:
    paths:
      - web/node_modules/**/*

内容的提问来源于stack exchange,提问作者user10504

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 23:52:32