跳到內容
文件錯誤No Before Interactive Script Outside Document

No Before Interactive Script Outside Document

防止在 app/layout.jsxpages/_document.js 之外使用 next/scriptbeforeInteractive 策略。

為何發生此錯誤

您無法在 app/layout.jsxpages/_document.js 之外使用具有 beforeInteractive 策略的 next/script 元件。這是因為 beforeInteractive 策略僅在app/layout.jsxpages/_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>
  )
}