No Before Interactive Script Outside Document
防止在
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>
)
}
實用連結
這有幫助嗎?