# Sveltekit で開発用ページを作る方法。
本番環境では公開しない


published: 2025-01-05

本番環境では 404 を返す


## 悩み

Sveltekit で SSG しているサイトがあり、

・開発用のダッシュボードを作りたい
・本番環境では 404 を返したい

という要件があった。

Sveltekit はファイルベースルーティングであり、ファイルを存在させたらそのままルーティングされてしまう。
どうやって環境差異を入れようか。


## 解決策

+page.server.ts の load() で環境変数を見て、本番環境なら 404 を返す


- [ドキュメント](https://svelte.jp/docs/kit/errors#Expected-errors)
## コード

### `+page.svelte`

```svelte
<div>
	hello
</div>

```

### `+page.server.ts`

```ts
import { error } from '@sveltejs/kit'

export const load = async () => {
	// 本番環境なら (≒ vite build なら)
	if (import.meta.env.PROD) {
		error(404, 'Page not found')
	}

	return {}
}

```

### memos

error() は内部で throw new Error() する。
なので後続の処理は実行されない。


mark: `+page.server.ts:5`

- [GitHub](https://github.com/sveltejs/kit/blob/9fbfb22e442236e1a8ffa27a71fbef84166646e6/packages/kit/src/exports/index.js#L64)
## おわりに

たぶん他にも方法はある。

趣味で運営しているサイトなので、雑な実装をしているが、商用サイトなら別の手段を推奨


