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

Culori.js在Svelte REPL中运行正常但本地项目报错如何解决

Culori 在本地 Svelte 项目导入返回 undefined 问题

Culori 包在 Svelte REPL 中运行正常,但本地运行时返回 undefined。尝试过下载该 REPL 代码包、通过 degit 初始化全新项目并安装 Culori,均无法解决问题。

复现步骤

  • 下载对应 REPL 的 zip 压缩包
  • 解压文件内容
  • 执行 npm install 安装依赖
  • 执行 npm run dev 启动项目
    控制台输出报错信息如下:
[rollup-plugin-svelte] The following packages did not export their `package.json` file so we could not check the "svelte" field. If you had difficulties importing svelte components from a package, then please contact the author and ask them to export the package.json file.

- culori

目前找到的唯一 workaround 是通过 CDN 引入 Culori,但不想采用该方案。请问是否有方法可以让 Culori 像在 REPL 中一样,在本地 Svelte 项目中正常运行?


解决方案

该问题由旧版 rollup-plugin-svelte 依赖的 package.json 导出校验逻辑触发:Culori 官方包的导出字段未包含自身的 package.json 文件,插件校验失败后会中断正常的模块解析流程,最终导致导入返回 undefined。

方案一:修改 Rollup 配置(适用于 REPL 下载的默认 Rollup 模板项目)

打开项目根目录的 rollup.config.js,找到 svelte 插件配置项,新增 resolvePackageJsonExports: false 参数关闭校验即可:

import svelte from 'rollup-plugin-svelte';

export default {
  // 其余原有配置保持不变
  plugins: [
    svelte({
      // 其余原有svelte配置保持不变
      resolvePackageJsonExports: false
    }),
    // 其余原有插件保持不变
  ]
}

方案二:修改 Vite 配置(适用于 Vite 驱动的 Svelte 项目)

如果使用 Vite 构建项目,打开 vite.config.js,将 culori 加入预构建依赖列表即可:

import { defineConfig } from 'vite'
import { svelte } from '@sveltejs/vite-plugin-svelte'

export default defineConfig({
  plugins: [svelte()],
  optimizeDeps: {
    include: ['culori']
  }
})

备用兜底方案

如果上述配置不生效,可直接指定 culori 完整的 ES 模块路径导入:

import * as culori from 'culori/dist/culori.esm.js'

配置修改完成后,删除项目缓存目录(默认是 node_modules/.cache),重新执行依赖安装和启动命令即可正常使用 culori,不会再触发相关报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 01:15:05