ドキュメント外部での beforeInteractive スクリプトの禁止
app/layout.jsx
またはpages/_document.js
の外部でnext/script
のbeforeInteractive
戦略を使用しないでください。
このエラーが発生した理由
app/layout.jsx
または pages/_document.js
の外部で、beforeInteractive
戦略を使用して next/script
コンポーネントを使用することはできません。これは、beforeInteractive
戦略が **app/layout.jsx
** または **pages/_document.js
** 内部でのみ機能し、サイト全体で必要なスクリプトを読み込むように設計されているためです(つまり、アプリケーションのいずれかのページがサーバーサイドで読み込まれたときにスクリプトが読み込まれます)。
修正方法
App Router
グローバルスクリプトが必要で、App Routerを使用している場合は、スクリプトを app/layout.jsx
内に移動してください。
app/layout.jsx
import Script from 'next/script'
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>{children}</body>
<Script
src="https://example.com/script.js"
strategy="beforeInteractive"
/>
</html>
)
}
Pages Router
グローバルスクリプトが必要で、Pages Routerを使用している場合は、スクリプトを pages/_document.js
内に移動してください。
pages/_document.js
import { Html, Head, Main, NextScript } from 'next/document'
import Script from 'next/script'
export default function Document() {
return (
<Html>
<Head />
<body>
<Main />
<NextScript />
<Script
src="https://example.com/script.js"
strategy="beforeInteractive"
></Script>
</body>
</Html>
)
}
これは役に立ちましたか?