Rollup 说“[name] 不是由 [file] 导出”,而它显然是

Rollup says "[name] is not exported by [file]" while it clearly is

我正在构建一个 Svelte/TypeScript 应用程序,突然它无法再编译,并出现以下错误:

[!] Error: 'VoidPromiseCallback' is not exported by src/types.ts, imported by src/TopicEditionFormStack/TopicEditionFormStack.svelte
https://rollupjs.org/guide/en/#error-name-is-not-exported-by-module
src/TopicEditionFormStack/TopicEditionFormStack.svelte (2:18)
1: <script lang="ts">
2:   import { Topic, VoidPromiseCallback } from '../types.js';
                     ^

但是,如果您查看文件 src/types.ts,您会在末尾看到:

export type VoidPromiseCallback = {
  resolve: () => void,
  reject: (reason?: any) => void,
}

VS Code 同意 types.ts 导出名称,因为如果我 “转到定义” 出现 VoidPromiseCallback Rollup 抱怨, 它导航到上面引用的导出。

知道是什么原因造成的吗?我在想也许 Rollup 没有使关于 types.ts.

的导出的缓存无效

在 svelte 组件中,您需要通过指定您导入的类型来导入您的类型:

import { Topic } from '../types.js';
import type { VoidPromiseCallback } from '../types.js';