[{"data":1,"prerenderedAt":408},["ShallowReactive",2],{"content-/nuxt-vite-optimize-deps-warning":3,"all-pages-for-dir":385,"related-/nuxt-vite-optimize-deps-warning":386,"og-image-/nuxt-vite-optimize-deps-warning":407},{"id":4,"title":5,"body":6,"category":371,"concepts":371,"description":372,"extension":373,"meta":374,"navigation":150,"ogImage":371,"path":375,"project_name":371,"published":376,"publishedAt":377,"seo":378,"source":371,"stem":379,"tags":380,"todo":371,"unpublished":376,"updatedAt":377,"__hash__":384},"pages/2025-12/2025-12-09/nuxt-vite-optimize-deps-warning.md","Nuxt開発サーバーの「Failed to resolve dependency」警告を解消する",{"type":7,"value":8,"toc":362},"minimark",[9,13,17,26,36,39,50,58,62,92,95,105,324,327,333,337,344,355,358],[10,11,5],"h1",{"id":12},"nuxt開発サーバーのfailed-to-resolve-dependency警告を解消する",[14,15,16],"h2",{"id":16},"問題",[18,19,20,21,25],"p",{},"Nuxt + @nuxt/content を使用したプロジェクトで ",[22,23,24],"code",{},"pnpm dev"," を実行すると、以下のような警告が大量に表示される。",[27,28,33],"pre",{"className":29,"code":31,"language":32},[30],"language-text","WARN  Failed to resolve dependency: @nuxtjs/mdc > remark-emoji, present in client 'optimizeDeps.include'\nWARN  Failed to resolve dependency: @nuxtjs/mdc > remark-mdc, present in client 'optimizeDeps.include'\nWARN  Failed to resolve dependency: @nuxtjs/mdc > remark-rehype, present in client 'optimizeDeps.include'\nWARN  Failed to resolve dependency: @nuxtjs/mdc > rehype-raw, present in client 'optimizeDeps.include'\nWARN  Failed to resolve dependency: @nuxtjs/mdc > parse5, present in client 'optimizeDeps.include'\nWARN  Failed to resolve dependency: @nuxtjs/mdc > unist-util-visit, present in client 'optimizeDeps.include'\nWARN  Failed to resolve dependency: @nuxtjs/mdc > unified, present in client 'optimizeDeps.include'\nWARN  Failed to resolve dependency: @nuxtjs/mdc > debug, present in client 'optimizeDeps.include'\n","text",[22,34,31],{"__ignoreMap":35},"",[14,37,38],{"id":38},"原因",[18,40,41,42,45,46,49],{},"Nuxt Content が内部で使用する MDC パーサーである ",[22,43,44],{},"@nuxtjs/mdc"," が、Vite の ",[22,47,48],{},"optimizeDeps.include"," にこれらのパッケージを追加している。",[18,51,52,53,57],{},"しかしこれらのパッケージは",[54,55,56],"strong",{},"サーバーサイドでのみ使用される"," Markdown パース用のライブラリであり、クライアントサイドのバンドルには含まれない。そのためVite がクライアント用に事前最適化しようとしても解決できず、警告が発生する。",[59,60,61],"h3",{"id":61},"なぜ実害はないのか",[63,64,65,79,82,85],"ul",{},[66,67,68,71,72,71,75,78],"li",{},[22,69,70],{},"remark-*","、",[22,73,74],{},"rehype-*",[22,76,77],{},"unified"," などは Markdown をパースするためのパッケージ",[66,80,81],{},"Nuxt Content は SSR（サーバーサイドレンダリング）でコンテンツをパースする",[66,83,84],{},"本番ビルド時は静的 HTML に変換されるため、これらのパッケージはビルド時にのみ使われる",[66,86,87,88,91],{},"警告が出ていても、ビルド自体は正常に完了する（",[22,89,90],{},"✔ Vite client built"," が表示される）",[14,93,94],{"id":94},"対処法",[18,96,97,100,101,104],{},[22,98,99],{},"nuxt.config.ts"," に ",[22,102,103],{},"vite.optimizeDeps.exclude"," を追加して、これらのパッケージをクライアント側の最適化対象から明示的に除外する。",[27,106,110],{"className":107,"code":108,"language":109,"meta":35,"style":35},"language-typescript shiki shiki-themes vitesse-light vitesse-light","// nuxt.config.ts\nexport default defineNuxtConfig({\n  // ... 他の設定 ...\n\n  vite: {\n    optimizeDeps: {\n      exclude: [\n        // These are server-side only packages used by @nuxtjs/mdc\n        // Excluding them removes \"Failed to resolve dependency\" warnings\n        'remark-emoji',\n        'remark-mdc',\n        'remark-rehype',\n        'rehype-raw',\n        'parse5',\n        'unist-util-visit',\n        'unified',\n        'debug'\n      ]\n    }\n  },\n\n  // ... 他の設定 ...\n})\n","typescript",[22,111,112,121,139,145,152,162,170,179,185,191,208,220,232,244,256,268,279,290,296,302,308,313,318],{"__ignoreMap":35},[113,114,117],"span",{"class":115,"line":116},"line",1,[113,118,120],{"class":119},"sxvE3","// nuxt.config.ts\n",[113,122,124,128,131,135],{"class":115,"line":123},2,[113,125,127],{"class":126},"sHkkW","export",[113,129,130],{"class":126}," default",[113,132,134],{"class":133},"senZ8"," defineNuxtConfig",[113,136,138],{"class":137},"shFtX","({\n",[113,140,142],{"class":115,"line":141},3,[113,143,144],{"class":119},"  // ... 他の設定 ...\n",[113,146,148],{"class":115,"line":147},4,[113,149,151],{"emptyLinePlaceholder":150},true,"\n",[113,153,155,159],{"class":115,"line":154},5,[113,156,158],{"class":157},"sz8Xr","  vite",[113,160,161],{"class":137},": {\n",[113,163,165,168],{"class":115,"line":164},6,[113,166,167],{"class":157},"    optimizeDeps",[113,169,161],{"class":137},[113,171,173,176],{"class":115,"line":172},7,[113,174,175],{"class":157},"      exclude",[113,177,178],{"class":137},": [\n",[113,180,182],{"class":115,"line":181},8,[113,183,184],{"class":119},"        // These are server-side only packages used by @nuxtjs/mdc\n",[113,186,188],{"class":115,"line":187},9,[113,189,190],{"class":119},"        // Excluding them removes \"Failed to resolve dependency\" warnings\n",[113,192,194,198,202,205],{"class":115,"line":193},10,[113,195,197],{"class":196},"sMJiu","        '",[113,199,201],{"class":200},"sdGka","remark-emoji",[113,203,204],{"class":196},"'",[113,206,207],{"class":137},",\n",[113,209,211,213,216,218],{"class":115,"line":210},11,[113,212,197],{"class":196},[113,214,215],{"class":200},"remark-mdc",[113,217,204],{"class":196},[113,219,207],{"class":137},[113,221,223,225,228,230],{"class":115,"line":222},12,[113,224,197],{"class":196},[113,226,227],{"class":200},"remark-rehype",[113,229,204],{"class":196},[113,231,207],{"class":137},[113,233,235,237,240,242],{"class":115,"line":234},13,[113,236,197],{"class":196},[113,238,239],{"class":200},"rehype-raw",[113,241,204],{"class":196},[113,243,207],{"class":137},[113,245,247,249,252,254],{"class":115,"line":246},14,[113,248,197],{"class":196},[113,250,251],{"class":200},"parse5",[113,253,204],{"class":196},[113,255,207],{"class":137},[113,257,259,261,264,266],{"class":115,"line":258},15,[113,260,197],{"class":196},[113,262,263],{"class":200},"unist-util-visit",[113,265,204],{"class":196},[113,267,207],{"class":137},[113,269,271,273,275,277],{"class":115,"line":270},16,[113,272,197],{"class":196},[113,274,77],{"class":200},[113,276,204],{"class":196},[113,278,207],{"class":137},[113,280,282,284,287],{"class":115,"line":281},17,[113,283,197],{"class":196},[113,285,286],{"class":200},"debug",[113,288,289],{"class":196},"'\n",[113,291,293],{"class":115,"line":292},18,[113,294,295],{"class":137},"      ]\n",[113,297,299],{"class":115,"line":298},19,[113,300,301],{"class":137},"    }\n",[113,303,305],{"class":115,"line":304},20,[113,306,307],{"class":137},"  },\n",[113,309,311],{"class":115,"line":310},21,[113,312,151],{"emptyLinePlaceholder":150},[113,314,316],{"class":115,"line":315},22,[113,317,144],{"class":119},[113,319,321],{"class":115,"line":320},23,[113,322,323],{"class":137},"})\n",[14,325,326],{"id":326},"結果",[18,328,329,330,332],{},"設定追加後、",[22,331,24],{}," を再起動すると警告が表示されなくなる。",[14,334,336],{"id":335},"補足本番環境への影響","補足：本番環境への影響",[18,338,339,340,343],{},"このプロジェクトでは ",[22,341,342],{},"cloudflare-pages-static"," プリセットを使用しており、本番ビルド時にはすべてのページが静的 HTML に変換される。そのため：",[63,345,346,349,352],{},[66,347,348],{},"これらのパッケージはビルド時（サーバー側）でのみ使用される",[66,350,351],{},"クライアントに配信される JavaScript バンドルには含まれない",[66,353,354],{},"本番環境のパフォーマンスには一切影響しない",[18,356,357],{},"この対処は開発時の警告を消すためのものであり、本番環境の動作には影響しない。",[359,360,361],"style",{},"html pre.shiki code .sxvE3, html code.shiki .sxvE3{--shiki-default:#A0ADA0;--shiki-dark:#A0ADA0}html pre.shiki code .sHkkW, html code.shiki .sHkkW{--shiki-default:#1E754F;--shiki-dark:#1E754F}html pre.shiki code .senZ8, html code.shiki .senZ8{--shiki-default:#59873A;--shiki-dark:#59873A}html pre.shiki code .shFtX, html code.shiki .shFtX{--shiki-default:#999999;--shiki-dark:#999999}html pre.shiki code .sz8Xr, html code.shiki .sz8Xr{--shiki-default:#998418;--shiki-dark:#998418}html pre.shiki code .sMJiu, html code.shiki .sMJiu{--shiki-default:#B5695977;--shiki-dark:#B5695977}html pre.shiki code .sdGka, html code.shiki .sdGka{--shiki-default:#B56959;--shiki-dark:#B56959}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":35,"searchDepth":123,"depth":123,"links":363},[364,365,368,369,370],{"id":16,"depth":123,"text":16},{"id":38,"depth":123,"text":38,"children":366},[367],{"id":61,"depth":141,"text":61},{"id":94,"depth":123,"text":94},{"id":326,"depth":123,"text":326},{"id":335,"depth":123,"text":336},null,"Nuxt Content使用時にViteが出すoptimizeDeps関連の警告メッセージを消す方法","md",{},"/nuxt-vite-optimize-deps-warning",false,"2025-12-09T00:00:00.000Z",{"title":5,"description":372},"2025-12/2025-12-09/nuxt-vite-optimize-deps-warning",[381,382,383],"Nuxt","Vite","トラブルシューティング","2CFToL71jzqxRgfyZ04v_yKPoIQ45GjGM35Njh8NBNQ",[],[387,391,395,399,403],{"title":388,"path":389,"publishedAt":390},"Nuxt SSGビルドエラーを3つ潰して本番デプロイを復旧した","/nuxt-ssg-build-fix-2026-03-05","2026-03-05T00:00:00.000Z",{"title":392,"path":393,"publishedAt":394},"pnpm generate が exit 134 で落ちた日——ヒープOOMと検証スクリプト偽陽性の二段落ち","/generate-oom-and-verify-false-positive","2026-07-04T00:00:00.000Z",{"title":396,"path":397,"publishedAt":398},"Nuxtでスタイルが反映されない時は.nuxtフォルダを削除する","/nuxt-cache-troubleshoot","2026-01-17T00:00:00.000Z",{"title":400,"path":401,"publishedAt":402},"OCRバリデーションUIの3カラムレイアウト実装","/ocr-validation-ui","2026-01-13T00:00:00.000Z",{"title":404,"path":405,"publishedAt":406},"@nuxt/content「UNIQUE constraint failed: _content_pages.__hash__」エラーの原因と解決策","/nuxt-content-sqlite-unique-constraint","2026-01-06T00:00:00.000Z","https://log.eurekapu.com/og/blog/nuxt-vite-optimize-deps-warning.png?v=2025-12-09T00%3A00%3A00.000Z&title=Nuxt%E9%96%8B%E7%99%BA%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AE%E3%80%8CFailed%20to%20resolve%20dependency%E3%80%8D%E8%AD%A6%E5%91%8A%E3%82%92%E8%A7%A3%E6%B6%88%E3%81%99%E3%82%8B&author=Kei%20Komatsu&sig=5772225e3175b834",1785654674263]