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

Svelte导入Socket.IO客户端库时报Exports not defined错误如何解决?

问题原因

Uncaught Reference error: exports not defined 报错的核心原因是Socket.IO客户端默认发布的是CommonJS格式产物,Svelte默认的Rollup打包配置未正确将该CommonJS模块转换为浏览器可识别的ES模块,CommonJS独有的exports语法在浏览器环境中不存在,因此触发报错。

解决方案
  • 方案1:修改Rollup配置适配CommonJS转译
    首先确认已安装@rollup/plugin-commonjs依赖,未安装可执行安装命令:
    npm install @rollup/plugin-commonjs --save-dev
    之后修改项目根目录的rollup.config.js,调整commonjs插件配置:
    import commonjs from '@rollup/plugin-commonjs';
    
    export default {
      // 保留原有其他配置项不变
      plugins: [
        // 原有svelte、@rollup/plugin-node-resolve等插件保持在commonjs之前
        commonjs({
          include: /node_modules/,
          dynamicRequireTargets: [
            'node_modules/socket.io-client/**/*.js',
            'node_modules/engine.io-client/**/*.js'
          ]
        }),
        // 保留原有其他后续插件不变
      ]
    }
    
    配置修改完成后删除项目缓存重新启动即可生效。
  • 方案2:直接导入预构建ES模块产物
    无需修改打包配置,直接将导入语句替换为Socket.IO客户端预构建的ES模块路径即可:
    import io from 'socket.io-client/dist/socket.io.esm.min.js'
  • 方案3:Vite/SvelteKit项目适配
    如果使用Vite作为打包工具,只需在vite.config.js中添加依赖预构建配置即可:
    import { defineConfig } from 'vite'
    import { svelte } from '@sveltejs/vite-plugin-svelte'
    
    export default defineConfig({
      plugins: [svelte()],
      optimizeDeps: {
        include: ['socket.io-client']
      }
    })
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:24:03