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

Vite+TS项目使用Swiper执行npm run build打包报TS2322错误如何解决?

问题根因

该错误为Swiper高版本Vue组件的TS类型定义缺陷导致:开发环境下Vite不会执行全量TS类型校验,因此运行无异常;生产构建时触发全量类型检查,识别到swiper组件必填类型属性缺失,抛出TS2322错误。

解决方案

你可以任选以下任意一种方式修复:

  • 方案1:修改模板代码,给swiper组件显式传递空的swiperRef属性(最推荐,无副作用)
    修改后的template代码如下:
<template>
<swiper :navigation="true" class="mySwiper" :swiper-ref="null">
  <swiper-slide>Slide 1</swiper-slide>
  <swiper-slide>Slide 2</swiper-slide>
  <swiper-slide>Slide 3</swiper-slide>
  <swiper-slide>Slide 4</swiper-slide>
  <swiper-slide>Slide 5</swiper-slide>
  <swiper-slide>Slide 6</swiper-slide>
  <swiper-slide>Slide 7</swiper-slide>
  <swiper-slide>Slide 8</swiper-slide>
  <swiper-slide>Slide 9</swiper-slide>
  </swiper>
</template>
  • 方案2:修改tsconfig.json配置,跳过第三方库类型校验
    在compilerOptions中新增"skipLibCheck": true即可,修改后的配置片段如下:
{
  "compilerOptions": {
    "target": "esnext",
    "useDefineForClassFields": true,
    "module": "esnext",
    "moduleResolution": "node",
    "strict": true,
    "skipLibCheck": true,
    "jsx": "preserve",
    "sourceMap": true,
    "resolveJsonModule": true,
    "esModuleInterop": true,
    "lib": ["esnext", "dom"],
    "noImplicitAny": false,
    "allowJs": true,
  },
  "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"]
}
  • 方案3:降级Swiper版本
    如果你使用的是Swiper 9.x及以上版本,可以卸载当前版本后安装8.x稳定版:
    npm uninstall swiper && npm install swiper@8.4.7

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:45:01