ssr/no-browser-globals-in-ssr
SSR で実行されるコードのブラウザー専用グローバル参照を検出します。
既定の重大度: warning
プリセット: happy-path, nuxt, ecosystem, opinionated
自動修正: なし。修正内容を確認してください
適用範囲: Vue SFC のテンプレート・ブロック。必要な script の文脈も例に含めています。
オプション: ルール固有のオプションはありません。重大度とプリセットは設定できます。
設定(Vite+)
import { defineConfig } from "@vizejs/vite-plugin/vite-plus";
export default defineConfig({
lint: {
vize: {
"preset": "incremental",
"rules": {
"ssr/no-browser-globals-in-ssr": "warn"
}
},
},
});
vp run lint
悪い
setup の実行時に window.innerWidth を直接読みますが、サーバー上のコンポーネント実行時には window が存在しません。
<script setup lang="ts">
const width = window.innerWidth;
</script>
良い
初期の幅をサーバーでも扱える ref の値にし、ブラウザー API の参照を SSR の setup ではなくクライアントで実行する onMounted に移します。
<script setup lang="ts">
const width = ref(0);
onMounted(() => {
width.value = window.innerWidth;
});
</script>
良い例は上記の設定でこのルールの検出を避ける例です。他のルールでは検出される場合があります。