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

Vercel构建报错:类型'Product'不存在'imageUrl'属性(已声明)

Vercel构建时TypeScript类型错误:Product类型不存在imageUrl属性

在Vercel构建过程中,CartItem.tsx组件接收的product参数触发类型错误,提示Property 'imageUrl' does not exist on type 'Product',但该属性已在types.tsx的Product类型中声明,报错位置为Image组件的src={product.imageUrl}行。

报错信息

Type error: Property 'imageUrl' does not exist on type 'Product'.
  43 |       <div className="flex items-center">
  44 |         <Image
> 45 |           src={product.imageUrl}
     |                        ^
  46 |           alt={product.itemName}
  47 |           width={100}
  48 |           height={100}

相关代码

CartItem.tsx

import { Product } from "types/types";
import Image from "next/image";

export default function CartItem({ product }: { product: Product }) {
/* ... */

  return (
      <div className="flex items-center">
        <Image
          src={product.imageUrl}
          alt={product.itemName}
          width={100}
          height={100}
          className="h-10 w-10 rounded-full mr-4 object-cover"
        />
       {/* ... */}
      </div>
  );
}

types.tsx

/* ... */
export type Product = {
  id: number;
  restaurantId: number;
  itemName: string;
  restaurantName: string;
  imageUrl: string;
  // title: string;
  description: string;
  price: number;
  // discountPercentage: number;
  // rating: number;
  // stock: number;
  // brand: string;
  // category: string;
  // thumbnail: string;
  // images: string[];
  quantity?: number;
};

排查与解决方法

  • 检查导入路径正确性:确认CartItem.tsx中import { Product } from "types/types";的路径是否指向正确的types.tsx文件。Vercel构建环境的路径解析可能和本地不一致,尝试改用相对路径(如../types/types)测试。
  • 清理构建缓存:本地缓存可能导致类型未同步到构建环境,可在package.json中添加Vercel专属构建脚本,强制清理缓存后构建:
    "scripts": {
      "vercel-build": "rm -rf .next && npm run build"
    }
    
  • 排查重复类型定义:全局搜索项目中的type Product,确认是否存在其他文件重复定义了Product类型,导致构建时导入了错误的类型。
  • 验证TypeScript配置:检查tsconfig.json的baseUrl和paths配置,确保types/*的路径映射在Vercel环境中能正确解析,示例配置:
    {
      "compilerOptions": {
        "baseUrl": ".",
        "paths": {
          "types/*": ["src/types/*"]
        }
      }
    }
    
  • 临时类型断言(排查用):在报错行添加src={(product as any).imageUrl},若构建通过则说明是类型解析问题,再回头解决根源问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 16:16:27