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

Svelte-Kit搭配adapter-static用AWS Amplify构建报tslib错误如何解决

报错原因

该问题是ESM与CommonJS模块规范不兼容导致的,核心触发点有两个:

  1. tslib v2.6.0及以上版本调整了默认导出的暴露逻辑,不再直接给ESM导入场景暴露default导出,而旧版本的@sveltejs/adapter-static采用了CommonJS风格的import tslib from 'tslib'语法,在SvelteKit默认的纯ESM项目环境下无法识别到对应导出。
  2. AWS Amplify构建环境默认会优先扁平化安装最高版本的依赖,容易出现项目局部依赖要求的tslib版本和全局安装的tslib版本不一致的冲突问题。
修复方案
  • 锁定tslib的兼容版本
    在package.json中根据你使用的包管理器添加版本锁定配置:
    若使用npm,添加overrides配置:
    {
      "overrides": {
        "tslib": "~2.5.3"
      }
    }
    
    若使用yarn或者pnpm,添加resolutions配置:
    {
      "resolutions": {
        "tslib": "~2.5.3"
      }
    }
    
    配置完成后删除本地node_modules文件夹和对应的包锁文件(package-lock.json/yarn.lock/pnpm-lock.yaml),重新执行npm install安装依赖即可。
  • 升级@sveltejs/adapter-static到最新稳定版
    旧版本的静态适配器已停止维护,且存在ESM兼容性缺陷,最新版本已经修复了tslib导入的相关问题,执行以下命令升级即可:
    npm install @sveltejs/adapter-static@latest --save-dev
  • 调整AWS Amplify构建配置
    在项目根目录新增amplify.yml文件,指定构建使用的node版本和依赖安装参数,避免构建环境的依赖解析规则和本地不一致:
    version: 1
    frontend:
      phases:
        preBuild:
          commands:
            - nvm use 18
            - npm install --legacy-peer-deps
        build:
          commands:
            - npm run build
      artifacts:
        baseDirectory: build
        files:
          - '**/*'
      cache:
        paths:
          - node_modules/**/*
    
  • 新增Vite预构建配置(可选)
    如果前面的操作完成后仍然报错,可以在svelte.config.js中添加Vite的优化依赖配置,强制预构建tslib为ESM兼容格式:
    import adapter from '@sveltejs/adapter-static';
    
    export default {
      kit: {
        adapter: adapter(),
        vite: {
          optimizeDeps: {
            include: ['tslib']
          }
        }
      }
    };
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:06:00