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

Svelte部署报错:如何向build.rollupOptions.external添加模块

报错根因

你用的是SvelteKit架构,构建流程由Vite调度Rollup完成,项目根目录的rollup.config.js是旧版非Kit Svelte的配置文件,SvelteKit构建时完全不会读取,改这个文件没有任何作用。
报错本质是Vite无法匹配你写的深层导入路径,优先修正导入写法即可解决,不推荐上来就加external配置——external会把对应模块完全排除在构建产物外,需要手动引入CDN资源才能正常运行,属于兜底方案。

解决步骤

1. 修正组件导入语句

把SearchSection.svelte里的导入代码改成官方推荐的ESM导入写法,去掉冗余后缀和错误路径,绝大多数情况改完就能解决:

import algoliasearch from 'algoliasearch/lite';
import instantsearch from 'instantsearch.js';
import { searchBox, hits, index } from 'instantsearch.js/es/widgets';

2. 兜底方案:添加Rollup external配置

如果改完导入仍然报相同错误,再修改svelte.config.js,在kit.vite节点下添加Rollup构建配置,配置位置如下:

const config = {
  preprocess,
  kit: {
    adapter: adapterStatic(),
    target: "#svelte",
    vite: {
      resolve: {
        alias: {
          // 原有别名配置保持不变
          $actions: path.resolve("./src/actions"),
          $components: path.resolve("./src/components"),
          $data: path.resolve("./src/data"),
          $stores: path.resolve("./src/stores"),
          $styles: path.resolve("./src/styles"),
          $svg: path.resolve("./src/svg"),
          $utils: path.resolve("./src/utils")
        }
      },
      plugins: [dsv(), svg()],
      // 新增以下配置块
      build: {
        rollupOptions: {
          external: ['instantsearch.js/es/widgets.js']
        }
      }
      // 新增配置块结束
    },
    paths: {
      base
    }
  }
};

注意:如果使用了external配置,必须在src/app.html中手动引入对应版本的instantsearch.js CDN脚本,否则页面运行时会报模块不存在的错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 14:57:16