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

Svelte组件导入JS/TS类的正确方法及default导入报错解决

问题描述

现有SomeClass.ts文件内容如下:

class SomeClass {
  constructor () {
    console.log('created someclass')
  }
}

export default SomeClass

该文件编译后生成SomeClass.js,编译产物代码如下:

'use strict'
exports.__esModule = true
const SomeClass = /** @class */ (function () {
  function SomeClass () {
    console.log('created someclass')
  }
  return SomeClass
}())
exports.default = SomeClass

在App.svelte的script标签中按如下方式导入该类:

<script>
  import SomeClass from "./SomeClass";

  const instance = new SomeClass();
</script>

运行应用时抛出报错:
Uncaught SyntaxError: import not found: default
报错指向构建生成的代码行:import SomeClass from "/src/SomeClass.js?t=1655451078055";

备注:如果直接在SomeClass.js中使用标准ES6语法编写类并通过export default MyClass导出可以正常运行,但这种方式无法发挥TypeScript的作用。


解决方案

按以下步骤操作即可修复问题:

  • 安装svelte-preprocess依赖:
    npm install -D svelte-preprocess
    
  • 按如下方式更新vite.config.js配置:
    import { defineConfig } from 'vite'
    import { svelte } from '@sveltejs/vite-plugin-svelte'
    import sveltePreprocess from 'svelte-preprocess' // 新增引入
    
    // https://vitejs.dev/config/
    export default defineConfig({
      plugins: [svelte({
        preprocess: sveltePreprocess() // 新增预处理配置
      })]
    })
    
  • 删除之前编译生成的旧.js文件,后续直接引用TypeScript源文件即可正常运行。

运行效果截图


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 07:42:18