Svelte+Vite项目中无法导入同级目录TypeScript接口
Svelte项目TypeScript接口导入失败排查与解决
问题详情
在Svelte项目中导入TypeScript接口时,IDE显示导入正常,但服务器返回报错。接口文件路径为src/interface/EnabledSignUpArgs.interface.ts,代码如下:
export interface EnabledSignupArgs { email: string username: string password: string confirmedPassword: string agreedToTOS: boolean agreedToPrivacyPolicy: boolean } // 也尝试添加过默认导出 export default EnabledSignupArgs
在两个不同文件中分别使用相对路径导入:
import { EnabledSignupArgs } from "../../interface/EnabledSignUpArgs.interface"
import { EnabledSignupArgs } from "../interface/EnabledSignUpArgs.interface"
服务器返回的错误提示:
请求的模块
'/src/interface/EnabledSignUpArgs.interface.ts'未提供名为EnabledSignupArgs的导出
已尝试的操作:
- 重启开发服务器
- 将接口文件移动到其他目录
- 添加默认导出
当前tsconfig.json配置:
{ "extends": "./.svelte-kit/tsconfig.json", "compilerOptions": { "moduleResolution": "node", "module": "es2020", "lib": ["es2020", "DOM"], "target": "es2020", "importsNotUsedAsValues": "preserve", "isolatedModules": false, "resolveJsonModule": true, "sourceMap": true, "esModuleInterop": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true, "baseUrl": ".", "allowJs": true, "checkJs": true, "paths": { "$components/*": ["src/lib/components/*"], "$styles/*": ["src/lib/styles/*"], "$utils/*": ["src/lib/utils/*"], "$src/*": ["src/*"], "$lib": ["src/lib"], "$lib/*": ["src/lib/*"] }, "types": ["jest"] }, "include": ["src/**/*.d.ts", "src/**/*.js", "src/**/*.ts", "src/**/*.svelte"] }
解决方法
1. 使用配置好的绝对路径导入
tsconfig.json中已配置$src/*映射到src/*,改用绝对路径导入可避免相对路径层级错误:
import { EnabledSignupArgs } from '$src/interface/EnabledSignUpArgs.interface'
2. 清理Svelte Kit缓存并重启
仅重启服务器可能无法清理缓存,需删除.svelte-kit目录后重新启动:
rm -rf .svelte-kit npm run dev
3. 调整TypeScript配置
将isolatedModules设为true,这是Svelte Kit推荐的配置,确保编译器正确处理模块:
在tsconfig.json的compilerOptions中修改:
"isolatedModules": true
4. 确认导出与导入的一致性
检查导出的接口名EnabledSignupArgs与导入时的名称完全一致,同时确保文件名EnabledSignUpArgs.interface.ts在导入路径中拼写正确(注意SignUp的大小写)。
内容的提问来源于stack exchange,提问作者plutownium
相关产品推荐
相关产品推荐

