You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js项目中onLoad内的函数为何无法执行?

问题解决:Next.js Script组件onLoad不触发且无网络请求

核心问题

你把Script组件放在了Head组件内部,这是不符合Next.js规范的操作,直接导致脚本加载逻辑失效。Script组件(尤其是使用lazyOnload这类延迟加载策略时)必须直接放在页面的body内容区域,不能嵌套在Head里。

修正后的代码

把Script组件移出Head,放到页面的根容器内即可:

import Link from 'next/link';
import Head from 'next/head';
import Script from 'next/script';

const FirstPost = () => {
  return ( 
    <div>
      <Head>
        <title> BlogPost </title> 
      </Head>
      {/* 将Script组件移到Head外部 */}
      <Script 
        src="https://connect.facebook.net/en_US/sdk.js"
        strategy="lazyOnload"
        onLoad={() => {
          console.log("script loaded successfully");
        }}
      /> 
      <h3> first blog post in my next.js project </h3> 
      <Link href="/"> <h2> Go home </h2></Link>
    </div>
  )
}

export default FirstPost;

额外排查点

  • 确认你的Next.js版本在v11.0.0以上,Script组件是从这个版本开始引入的,旧版本不支持
  • 强制刷新浏览器(Ctrl+F5)清除缓存,避免缓存导致的脚本不加载
  • 检查脚本URL是否正确,确保没有拼写错误

内容的提问来源于stack exchange,提问作者user15442105

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 06:15:21