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 install
Module 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のエラーを素早く解決し、フレームワークのバージョンアップにも対応できます!