sveltekitで開発をしています。コンポーネントを使いたいのですが、+page.svelteに
<Header />
と書くと画面が表示されなくなってしまいました。 エラーの解決をしてください。
エラー Uncaught TypeError: Illegal invocation が発生する原因を +page.svelte のコードから調査すると、いくつかの問題が見つかりました。
<body> タグは +page.svelte に書かないSvelteKit では <body> を +page.svelte に書くべきではない ため、これを削除してください。
<body class=" ">
<main class="">
body タグは src/app.html で管理されるため、+page.svelte には不要です。Header.svelte と Footer.svelte のエラーチェックHeader.svelte や Footer.svelte の中で document や window を onMount なしで使っているとエラー が発生します。
Header.svelte の <script> に onMount を使っているか確認 してください。document や window を onMount なしで使用している場合、以下のように修正してください。<script>
document.title = "My Title"; // ❌ 直接 `document` を触るとエラー
</script>
<script>
import { onMount } from "svelte";
onMount(() => {
document.title = "My Title"; // ✅ `onMount` 内で実行
});
</script>
<svelte:head> は <body> の外に書く<svelte:head> は <body> の中に書かない ほうが良いです。
<body>
<svelte:head>
<title>アスベスト</title>
</svelte:head>
</body>
<svelte:head>
<title>タイトル</title>
</svelte:head>
<main class="bg-gray-100 min-h-screen flex flex-col">
+layout.svelte に <slot /> を入れるもし +layout.svelte が正しく設定されていない場合、+page.svelte の内容が表示されなくなる可能性があります。
+layout.svelte のコードを確認<script>
console.log("Layout Loaded");
</script>
<slot /> <!-- これがないと、ページのコンテンツが消える -->
+layout.svelte に <slot /> がない場合は追加してください。npm run dev のエラーログを確認ターミナルで npm run dev を実行し、エラーメッセージがないか確認してください。
npm run dev
もし 他のエラーメッセージが表示されている場合 は、そのログを共有してもらえれば、さらに詳しく調査できます!
✅ body タグを削除(+page.svelte では不要)
✅ Header.svelte や Footer.svelte の onMount の使用を確認
✅ <svelte:head> は <body> の外に記述
✅ +layout.svelte に <slot /> を追加
✅ npm run dev のエラーログを確認
これらの修正を試しても Illegal invocation エラーが解決しない場合、npm run dev のエラーログを貼ってもらえれば、さらに詳しくサポートできます! 🚀
Ctrl + C → npm run devメモリキャッシュ
npm run dev -- --force でキャッシュを強制更新SSR(サーバーサイドレンダリング)とCSR(クライアントサイドレンダリング)
+page.server.js でデータを取得する場合、SSRが優先 されるfetch を実行する場合は、onMount 内で実行する必要があるfetch を <script> 直下で await する(エラー発生)onMount(async () => { ... }) を利用するルートフォルダの変更
rm -rf node_modules/.vite でキャッシュを削除し、再起動コードの記述ミス
{} で囲む(例: {variable})v-model ではなく、Svelteでは bind:value を使う+layout.svelte に <slot /> があるか確認(ないとページが表示されない)ライブラリのインストール
npm installModule not found → node_modules を削除し、再インストールrm -rf node_modules package-lock.json
npm install
npm run dev
設定ファイルの確認
svelte.config.js の $lib エイリアス設定tailwind.config.js や postcss.config.js が正しく設定されているかファイルのインポートパスが正しいか
$lib エイリアスを利用import Header from "$lib/components/Header.svelte";
import Header from "../lib/components/Header.svelte";
ブラウザの開発者ツールでエラーメッセージを確認
F12 → Console でエラーの種類を特定Uncaught TypeError: Illegal invocation → 関数の使い方が誤っているFailed to resolve import "$lib/components/Header.svelte" → パスが間違っている500 Internal Server Error → サーバーサイドエラー✅ エラー発生時の基本対応
Ctrl + C) → キャッシュ削除 (rm -rf node_modules/.vite) → 再起動 (npm run dev)✅ レンダリングの仕組み
fetch は onMount で実行npm run dev -- --force で更新✅ 追加のデバッグ手順
F12)🚀 これらの手順を実施すれば、SvelteKitのエラー解決がスムーズになります!
使用するフレームワークのバージョンアップが原因で混乱することもありますが、どこを確認するべきですか?例えば、package.jsonがありますよね?
フレームワーク(SvelteKit, Tailwind CSS, Vite など)のバージョンアップで混乱しないために、確認すべき項目をリスト化 しました。
package.json で現在のバージョンを確認package.json には、現在インストールされている依存パッケージのバージョン が記載されています。
package.json を開く{
"dependencies": {
"@sveltejs/kit": "^1.0.0",
"svelte": "^3.50.0",
"tailwindcss": "^3.2.0"
},
"devDependencies": {
"vite": "^4.0.0"
}
}
npm list を実行npm list | grep svelte
または
npm outdated
を実行すると、更新可能なパッケージの一覧 を表示できます。
すべてのパッケージを最新にするには:
npm update
特定のパッケージを更新するには:
npm install @sveltejs/kit@latest
package-lock.json を削除してクリーンインストールpackage-lock.json は、インストールされた依存関係を固定するためのファイルです。
バージョンアップ後に不具合が発生した場合、一度削除して npm install し直すと解決することがあります。
rm -rf node_modules package-lock.json
npm install
svelte.config.js の設定を確認SvelteKit のバージョンアップ後、設定ファイルに変更がある場合があります。
特に エイリアス ($lib) の設定や、SSR の動作 が変更されることがあります。
$lib のエイリアス設定svelte.config.js に $lib のエイリアス設定が正しく書かれているか確認
import path from "path";
export default {
kit: {
alias: {
$lib: path.resolve("./src/lib") // ✅ 正しい設定
}
}
};
vite.config.js の設定を確認Vite のバージョンが上がったときに、設定が変更されていないかチェック する。
vite-plugin-svelte のバージョンが変わることで設定が変わることがある。server.hmr などの設定が変わる場合がある。import { sveltekit } from "@sveltejs/kit/vite";
export default {
plugins: [sveltekit()],
server: {
hmr: true, // HMR 設定が変更される場合がある
}
};
tailwind.config.js を確認Tailwind CSS のバージョンが変わった場合、content の設定や extend の設定が変更される ことがある。
content の設定を確認module.exports = {
content: ["./src/**/*.{svelte,html,js}"], // ✅ v3 の書き方
};
purge → content に変更されているか確認!
postcss.config.js を確認バージョンアップ後に CSS が適用されない場合、postcss.config.js の設定をチェック!
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
};
npm run dev でエラーを確認バージョンアップ後、開発サーバーを実行してエラーメッセージが出ないか確認。
npm run dev
よくあるエラー
Module not found → npm install が必要Unexpected token → 設定ファイルの記述ミス500 Internal Server Error → +page.server.js の変更に対応できていないnpm cache clean を実行バージョンアップ後に npm のキャッシュが影響してエラーが出る場合がある。
npm cache clean --force
その後、npm install し直してから npm run dev する。
node_modules/.vite を削除して試すrm -rf node_modules/.vite
npm run dev -- --force
Vite のキャッシュを削除すると、問題が解決することがある!
F12 でブラウザの開発者ツールを確認バージョンアップ後に、フロントエンドのエラーが出ている場合は 開発者ツール(Console)でチェック する。
Uncaught TypeError: Illegal invocation
→ 関数の呼び出しが正しくない(this の誤用、非同期処理の間違い)Failed to resolve import "$lib/..."
→ svelte.config.js のエイリアス設定が間違っている✅ 1. package.json のバージョンを確認
npm list
npm outdated
npm install @sveltejs/kit@latest
✅ 2. package-lock.json を削除し、クリーンインストール
rm -rf node_modules package-lock.json
npm install
✅ 3. svelte.config.js の $lib エイリアスをチェック
✅ 4. vite.config.js の設定を確認
✅ 5. tailwind.config.js の content をチェック
✅ 6. postcss.config.js の設定を確認
✅ 7. npm run dev でエラーログをチェック
✅ 8. npm cache clean --force を実行
✅ 9. node_modules/.vite を削除
rm -rf node_modules/.vite
npm run dev -- --force
✅ 10. F12 で開発者ツールを確認
🚀 このチェックリストを確認すれば、SvelteKit や Tailwind CSS、Vite のバージョンアップ後のトラブルを解決しやすくなります!
おっしゃる通りです。フレームワークのバージョンアップは、プロジェクトに影響を与える可能性があり、確認すべき箇所はいくつかあります。
1. package.json:
package.json を確認し、変更された依存関係を特定する必要があります。npm run dev や npm run build などのスクリプトが変更されている場合があります。package.json の scripts セクションを確認し、変更点があれば修正する必要があります。2. フレームワークの公式ドキュメント:
3. GitHub のリポジトリ:
4. コミュニティフォーラム:
具体的な確認手順:
フレームワークの公式ドキュメントを確認:
package.json に記載されている依存関係を確認し、変更が必要なものがないか確認します。GitHub のリポジトリを確認:
コミュニティフォーラムを確認:
package.json を確認:
npm install で新しいバージョンをインストールします。コードを修正:
テスト:
これらの手順を踏むことで、フレームワークのバージョンアップによる影響を最小限に抑え、スムーズな移行を行うことができるでしょう。
Ctrl + C → npm run dev)し、キャッシュを削除(npm cache clean --force)。 v-model の誤用、+layout.svelte の <slot />、svelte.config.js の $lib )。 package.json を確認し、npm outdated で依存関係を更新。 🚀 この手順を踏めば、SvelteKitのエラーを素早く解決し、フレームワークのバージョンアップにも対応できます!