我想在我的 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 一起玩?
我在一个全新的 Sveltekit 项目中有这个非常简单的组件:
<script context="module" lang="ts">
import type { Load } from '@sveltejs/kit';
export const load: Load = ({ url }) => {
const company = url.searchParams.get('company');
return {
props: {
company
}
};
}
</script>
<script type="ts">
export let company: string;
</script>
<h1>{company}</h1>
Run Code Online (Sandbox Code Playgroud)
当我在 VSCode 之外运行应用程序时也会发生这种情况,因此这不仅仅是 IDE 的问题。
我的package.json:
{
"name": "testapp",
"version": "0.0.1",
"scripts": {
"dev": "svelte-kit dev",
"build": "svelte-kit build",
"package": "svelte-kit package",
"preview": "svelte-kit preview",
"prepare": "svelte-kit sync",
"check": "svelte-check --tsconfig ./tsconfig.json",
"check:watch": "svelte-check --tsconfig …Run Code Online (Sandbox Code Playgroud)