【sveltekit】外部packageのコンポーネントがパスとして読み込まれる現象

問題発生

sveltekitでWebサービスを作っている中、node_modulesで取り込んでいるsvelteコンポーネントが単独でルーティングとして呼び出される事情が発生しました。(server側のevent.url.pathnameで取得できる)

そしてサーバーサイドのログにはError: Not found: /TideImageBox.svelteのエラーが……

このSvelteToast.svelteは有志が作成してくれているOSSです。 >svelte-toast

で、TideImageBox.svelteは自分が作ったLightbox風なコンポーネントです。 >svelte-tide-image-box

いずれもsveltekitのpackage機能を作成してビルドされています。

package側の問題なのか、取り込み側の問題なのか、@sveltekit/package側なのか……原因はわかりませんがひとまずこれを解決します。

暫定対処

取り込み側のvite.config.tsoptimizeDepsを設定すれば消えました

// vite.config.ts

const config: UserConfig = {
    // ...中略
    optimizeDeps: {
        exclude: ['{パッケージネーム}'],
    }
}

正直原因がわからないのでこの対応でいいのかがわかりませんが、機能としては問題なさそうではありました。 ちなみにこれはviteの依存関係の最適化を行うオプションで、事前バンドルから今回のパッケージを外すようにしています。

これで謎にアクセスしてたのはなくなりました。

コメント

コメントは承認制となっていますので、コメントを頂いても直ぐには表示されません。

なお、不適切な内容(スパムや悪意ある内容等)のコメントは公開されませんので、ご了承ください。

名もなき名無しさん
内容