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

SvelteKit/Vite重复运行应仅执行一次的导入代码问题

更新

全新安装的基础版SvelteKit不会出现此问题。推测该问题可能源于ComLink依赖或Web Worker本身。保留此问题并添加webworker标签,若找到解决方案会反馈或删除问题。

问题

我有两个核心代码一致的应用,分别基于Svelte+Vite和SvelteKit+Vite搭建(均使用TypeScript 5.0)。SvelteKit应用会在每次导入时重复运行导入代码,这不符合预期。将Svelte应用的Vite配置迁移到SvelteKit应用后,问题仍未解决。我计划从Svelte切换到SvelteKit,但此问题阻碍了进程,恳请提供指导、方向或搜索关键词。

示例

我在State.ts中定义应用状态,并在多个脚本文件中导入它。在State.ts顶部添加了console.log("STATE setup")语句。在Svelte应用中,尽管被多个文件导入,"STATE setup"仅打印一次;而在SvelteKit应用中,该语句会打印约8次(每次导入打印一次),且每隔几秒循环打印一次(推测是导入时代码重复运行导致)。

State.ts代码如下:

console.log("State imported");
export const state = "My State";

当auth.ts、config.ts和根目录+layout.svelte三个文件通过以下方式导入State.ts时:

import { state } from `$lib/app/State.ts`

Svelte应用的日志为:

State imported

而SvelteKit应用的日志为:

State imported
State imported
State imported

Vite配置

vite.config.ts中的配置如下:

import { sveltekit } from '@sveltejs/kit/vite';
import { defineConfig, searchForWorkspaceRoot } from 'vite';
import { nodePolyfills } from "vite-plugin-node-polyfills"

export default defineConfig({
    plugins: [
        nodePolyfills(),
        sveltekit()
    ],
    resolve: { alias: { './runtimeConfig': './runtimeConfig.browser' } },
    server: {
        fs: {
            allow: [
                searchForWorkspaceRoot(process.cwd()),
                "/build-scripts"
            ]
        }
    },
    build: {
        sourcemap: true,
        target: "es2020"
    },
    optimizeDeps: {
        esbuildOptions: {
            target: "es2020"
        }
    }
});

附加信息(可能无关)

  • "vite": "^4.3.0"
  • "typescript": "^5.0.0"
  • "svelte": "^3.54.0"
  • "@sveltejs/adapter-static": "^2.0.2"
  • "@sveltejs/kit": "^1.5.0"
  • 使用@sveltejs/adapter-static——虽削弱了SvelteKit部分特性,但看中其路由管理和项目结构
  • 直到尝试实现长期运行的Web Worker后问题才变得严重,该Worker会被循环实例化多次直至应用崩溃
  • 插件中的nodePolyfills()用于解决Web Worker环境中AWS Cognito的global is not defined及global、window未定义错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 01:22:41