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

Deno+Svelte+EsBuild遇Uncaught TypeError: Cannot read properties of undefined (reading '$$')

问题解决:Deno + Svelte + esbuild 出现 Uncaught TypeError: Cannot read properties of undefined (reading '$$')

这个错误本质是组件编译后运行时缺少Svelte内部核心对象,主要由版本不兼容或构建配置错误导致,以下是针对性修复方案:

1. 强制对齐Svelte与esbuild-svelte版本

esbuild-svelte对Svelte版本有严格依赖,不同插件版本必须匹配对应Svelte主版本(比如3.x插件对应Svelte 3,4.x插件对应Svelte 4)。在Deno中直接指定兼容版本:

// 导入指定版本的Svelte(示例为3.59.1,需和esbuild-svelte版本匹配)
import svelte from 'npm:svelte@3.59.1';
// 导入对应兼容的esbuild-svelte版本
import sveltePlugin from 'npm:esbuild-svelte@0.8.1';

然后在插件配置中显式传入Svelte实例,确保插件使用正确版本:

plugins: [sveltePlugin({
    preprocess: [typescript()],
    svelte: svelte // 绑定指定的Svelte版本
})],

2. 升级esbuild到稳定新版本

你当前使用的esbuild@v0.11.12过于老旧,和新版esbuild-svelte存在兼容性断层。建议升级到近期稳定版,比如:

import * as esbuild from 'https://deno.land/x/esbuild@v0.20.2/mod.js';

3. 移除不必要的类型断言

代码中(sveltePlugin as unknown as Function)的强制类型转换可能掩盖真实的导入错误。如果Deno类型检查报错,直接添加// @ts-ignore跳过即可,无需强制转成Function:

plugins: [
    // @ts-ignore 跳过Deno的类型检查
    sveltePlugin({
        preprocess: [typescript()]
    })
],

4. 验证自定义TypeScript预处理器

你重写的typescript()预处理器必须确保输出符合Svelte编译要求:

  • 正确处理Svelte script标签中的TypeScript语法
  • 生成标准JavaScript代码,保留Svelte所需的组件结构
    如果预处理器逻辑有误,会导致组件编译不完整,运行时缺失$$核心对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 03:08:38