Sveltekit + Typescript:环境变量构建错误

Sti*_*egi 21 types typescript sveltekit

我想在我的 Sveltekit 应用程序中使用环境变量 - 它在开发服务器上运行良好,但我收到此构建错误:

Error: 'PUBLIC_KEY' is not exported by $env/static/public, imported by src/routes/+layout.svelte

所以 Svelte 有这个模块可以帮助处理 env 的东西:https ://kit.svelte.dev/docs/modules#$env-static-public

我有一个简单的 .env 文件,如下所示:

PUBLIC_KEY=123
Run Code Online (Sandbox Code Playgroud)

现在 IDE 会抛出与构建错误相同的类型错误,但我可以通过将其添加到我的types.d.ts文件中来修复该错误:

PUBLIC_KEY=123
Run Code Online (Sandbox Code Playgroud)

现在我的 IDE 中的类型错误消失了,为了进行测试,我只需将其添加到我的 +layout.svelte 文件中:

declare module '$env/static/public' {
    export const PUBLIC_KEY: string;
}
Run Code Online (Sandbox Code Playgroud)

内容 123 在开发服务器上呈现,因此它可以工作。但是,如果我运行npm run build,则会出现上面的错误。即使将一个放在@ts-ignore导入之上也没有帮助。所以我的问题是:我需要做什么才能让 TS 一起玩?

Sti*_*egi 48

我在该功能的 PR 评论中找到了答案。如果这在文档中就好了。

但是,对于那些面临该问题并登陆此处的人:您必须运行svelte-kit sync- 它将根据您的 .env 文件创建一个类型文件。您可以使用npm run check- 这包括同步命令。

您不需要像我在问题中那样自己编写类型!赶紧跑npm run check

  • 对我来说,“svelte-kitsync”不存在,但运行“npx @sveltejs/kitsync”有帮助 (2认同)