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

StoryBlok API 半数请求返回未处理运行时错误问题求助

解决Storyblok API偶尔返回null导致的运行时错误

问题背景

使用Next 14 + Storyblok开发时,页面跳转有50%概率触发错误:Uncaught TypeError: Cannot read properties of null (reading 'get'),原因是getStoryblokApi()偶尔返回null,无法调用get方法获取数据。

解决方案

方案1:手动创建Storyblok API实例(推荐)

放弃依赖全局上下文注入的getStoryblokApi(),直接在每个服务器组件中手动初始化API实例,确保每次请求都能拿到有效实例:

import StoryblokClient from 'storyblok-js-client';

export default async function Home() {
  // 手动初始化API客户端
  const storyblokApi = new StoryblokClient({
    accessToken: process.env.SB_TOKEN,
  });

  // 正常获取数据
  const data = await storyblokApi.get(`cdn/stories/pages/home-page`, {
    version: "draft",
    language: lang,
  });
  const content = data.data.story.content;

  // 后续页面渲染逻辑
}

方案2:修复全局初始化的上下文问题

如果要保留storyblokInit的全局初始化方式,需要调整根布局的代码结构,并确保初始化逻辑在服务器端正确执行:

import { storyblokInit, apiPlugin } from "@storyblok/react/rsc";
import StoryblokBridgeLoader from '@storyblok/react/bridge-loader';

// 确保每次服务器请求都执行初始化
storyblokInit({
  accessToken: process.env.SB_TOKEN,
  use: [apiPlugin],
});

export default function RootLayout({ children }) {
  return (
    <html>
      <body>
        {children}
        {/* 将BridgeLoader放在body内部,保证DOM结构正确 */}
        <StoryblokBridgeLoader options={{}} />
      </body>
    </html>
  );
}

方案3:添加错误兜底处理

在页面中增加null判断和异常捕获,避免程序崩溃,同时提升用户体验:

import { getStoryblokApi } from '@storyblok/react';

export default async function Home() {
  const storyblokApi = getStoryblokApi();
  
  // 先判断API实例是否存在
  if (!storyblokApi) {
    return <div>内容加载中...</div>;
  }

  try {
    const data = await storyblokApi.get(`cdn/stories/pages/home-page`, {
      version: "draft",
      language: lang,
    });
    const content = data.data.story.content;
    // 渲染页面内容
  } catch (error) {
    console.error('Storyblok数据获取失败:', error);
    return <div>加载失败,请稍后重试</div>;
  }
}

方案说明

  • 手动创建实例可以彻底避免全局上下文注入的不确定性,尤其适合Next.js 14的RSC环境;
  • 调整根布局结构能保证StoryblokBridgeLoader在正确的DOM环境中初始化;
  • 错误兜底处理可以在问题未完全解决时,防止页面直接崩溃,给用户友好提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 23:47:19