跳至内容
文档错误文档外部不允许使用 Before Interactive 脚本

文档外部不允许使用 Before Interactive 脚本

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

错误发生的原因

您不能在 app/layout.jsxpages/_document.js 之外使用带有 beforeInteractive 策略的 next/script 组件。这是因为 beforeInteractive 策略仅在 app/layout.jsxpages/_document.js 内部有效,并且旨在加载整个站点所需的脚本(即,当应用程序中的任何页面已在服务器端加载时,脚本将加载)。

可能的解决方法

App 路由器

如果您想要一个全局脚本,并且正在使用 App 路由器,请将脚本移动到 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/_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>
  )
}