SvelteKit: server-only modules
Секреты и доступ к БД держите в серверных модулях; клиенту возвращайте только разрешённые поля.
Проверено Изменено
Плохо
// +page.ts: универсальный load
import { db } from "$lib/db";
Хорошо
// +page.server.ts: только сервер
import { db } from "$lib/server/db";
export async function load() {
return { products: await db.product.findMany({
select: { id: true, title: true },
orderBy: { id: "asc" }, take: 50
}) };
}
Почему это важно
Универсальный код может попасть в клиентскую сборку. Серверная загрузка тоже передаёт возвращённые данные браузеру.
Когда применять
SvelteKit 2; db — пример ORM-клиента проекта. В приватной выдаче добавьте проверку сессии и ограничение владельца. $lib/server и private env нельзя импортировать в клиентский код.
Кто что делает
Человек
Определяет, какие данные публичны.
AI-агент
Размещает модуль на сервере, проверяет состав ответа и сборку.
Пример применения
Каталог возвращает только id и title. Закупочная цена хранится в БД, но не включается в select и данные страницы.
Как проверить у себя
- Секреты отсутствуют в клиентской сборке.
- Ответ load не содержит закрытых полей.
Первоисточники
История изменений на GitHubДата проверки отражает содержательную сверку. Синхронизация сайта не обновляет её автоматически.