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

在SvelteKit+Electron项目中创建并运行TypeScript文件的最优方案

解决SvelteKit-Electron项目中TS文件被误判为页面及主进程TS化问题

1. 阻止SvelteKit处理Electron主进程文件

SvelteKit默认会扫描src下的文件,导致主进程的main.ts被当作页面触发重载。修改vite.config.ts,在Svelte插件配置里添加排除规则,跳过主进程相关文件:

import { sveltekit } from '@sveltejs/kit/vite';
import { defineConfig } from 'vite';

export default defineConfig({
  plugins: [
    sveltekit({
      exclude: ['src/main.ts', 'src/preload.ts'] // 填入你的主进程/预加载脚本路径
    })
  ]
});

同时确保主进程文件放在src根目录(而非src/routes),避免被SvelteKit路由系统自动识别。

2. 单独配置Electron主进程的TS编译

不要用tsc单文件编译,给主进程单独创建tsconfig.electron.json,明确编译规则和输出目录:

{
  "compilerOptions": {
    "target": "ES2020",
    "module": "CommonJS",
    "outDir": "./compiled",
    "rootDir": "./src",
    "strict": true,
    "esModuleInterop": true, // 自动解决导入时添加['default']的问题
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true
  },
  "include": ["src/main.ts", "src/preload.ts"],
  "exclude": ["src/routes/**/*"]
}

3. 替换electron.cjs为TS并配置编译脚本

将electron.cjs重命名为main.ts(放在src目录下),然后在package.json中添加编译与启动脚本:

{
  "scripts": {
    "electron:build": "tsc --project tsconfig.electron.json",
    "electron:dev": "npm run electron:build && electron ./compiled/main.js",
    "dev": "concurrently \"vite dev\" \"npm run electron:dev\""
  }
}

先安装concurrently实现多进程同时启动:npm install -D concurrently。

4. 确认编译产物位置

运行npm run electron:build后,主进程编译产物会输出到compiled目录下;SvelteKit渲染进程的编译产物则在.sveltekit/output目录中,两者互不干扰。

额外排查点

  • 若仍出现页面重载,检查Vite日志,确认被重载的文件已被排除在Svelte插件处理范围外。
  • 确保SvelteKit主配置tsconfig.json与tsconfig.electron.json无冲突,比如主配置module通常为ESNext,而Electron主进程需设为CommonJS。

内容的提问来源于stack exchange,提问作者Arthur Isnt original

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 10:35:25