假设我使用导入 .env 变量
import { PUBLIC_URL } from '$env/static/public';
如果变量不存在,它将抛出一个
HTTP 500 Internal Server error
,我可以在控制台中读取错误。
现在,如果其他人克隆了存储库并且没有
.env
文件,我想捕获此错误消息并抛出一个合适的错误描述。
我怎样才能实现这个目标?
我尝试使用
fs.exists()
,但似乎无法在Svelte中使用fs
。我还尝试导入 dotenv
并运行配置。当文件确实存在时,它会给出错误process is not defined
。
在您的
+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 错误。