如果在 Svelte 中找不到 .env 文件,如何捕获错误?

问题描述 投票:0回答:1

假设我使用导入 .env 变量

import { PUBLIC_URL } from '$env/static/public';

如果变量不存在,它将抛出一个

HTTP 500 Internal Server error
,我可以在控制台中读取错误。

现在,如果其他人克隆了存储库并且没有

.env
文件,我想捕获此错误消息并抛出一个合适的错误描述。

我怎样才能实现这个目标?

我尝试使用

fs.exists()
,但似乎无法在Svelte中使用
fs
。我还尝试导入
dotenv
并运行配置。当文件确实存在时,它会给出错误
process is not defined

javascript typescript environment-variables svelte
1个回答
0
投票

在您的

+page.server.ts
中,您可以检查
PUBLIC_URL
是否存在,如果不存在,则重定向到错误页面以显示您想要的消息。

import { PUBLIC_URL } from "$env/static/public";
import { redirect } from "@sveltejs/kit";

export const load = async () => {
    if (!PUBLIC_URL) {
        throw redirect(303, "/no-env");
    }

    return {};
};

这是有效的,因为页面服务器加载函数 (

+page.server.ts
) 将在客户端表示层 (
+page.svelte.ts
) 之前运行。

只需确保您重定向到的页面不需要

PUBLIC_URL
,否则您将面临相同的 500 错误。

© www.soinside.com 2019 - 2024. All rights reserved.