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

SvelteKit构建无头WordPress博客无法拉取文章问题

排查SvelteKit无头WordPress博客显示“No Posts Found”的问题

1. 修复load函数中的未定义变量错误

你的错误返回语句里用到了${url},但url变量并未定义,这会导致load函数抛出未捕获错误,进而无法正确返回posts数据。修改错误处理部分:

return {
    status: response.status,
    error: new Error(`Could not load ${import.meta.env.VITE_PUBLIC_WORDPRESS_API_URL}`)
};

2. 检查GraphQL响应是否包含错误

即使HTTP响应状态码为200(response.ok为true),GraphQL仍可能返回errors字段(比如权限不足、字段不存在等情况)。在load函数中添加GraphQL错误处理逻辑:

if (response.ok) {
    const responseObj = await response.json();
    // 捕获GraphQL层面的错误
    if (responseObj.errors) {
        console.error('GraphQL Errors:', responseObj.errors);
        return { props: { posts: [] } };
    }
    // 用可选链避免undefined报错,默认返回空数组
    const posts = responseObj.data?.posts?.nodes || [];
    return { props: { posts } };
}

3. 验证环境变量配置

确认项目根目录的.env文件中,VITE_PUBLIC_WORDPRESS_API_URL是否正确指向本地WordPress的WPGraphQL端点(例如http://localhost:8000/graphql),并且修改.env后已重启SvelteKit开发服务器。

4. 解决跨域(CORS)问题

如果SvelteKit开发服务器(默认端口5173)和WordPress实例端口不同,WordPress会阻止跨域请求。可通过以下方式解决:

  • 安装并激活WordPress的CORS管理插件
  • 或者在WordPress的wp-config.php中添加以下代码:
add_action('graphql_init', function() {
    header("Access-Control-Allow-Origin: http://localhost:5173"); // 替换为你的SvelteKit地址
    header("Access-Control-Allow-Methods: POST, GET, OPTIONS");
    header("Access-Control-Allow-Headers: Content-Type");
});

5. 调试load函数的返回值

在load函数中添加日志,查看实际获取到的数据:

console.log('GraphQL Response:', responseObj);
console.log('Posts Data:', responseObj.data?.posts?.nodes);

启动开发服务器后,在终端查看这些日志,确认posts是undefined、空数组还是有效数据。

6. 调整Svelte模板的判断逻辑

空数组在Svelte的{#if}中会被视为真值,因此如果posts是空数组,模板会显示空的<ul>而非“No Posts Found”。若想在posts为空时显示提示,修改判断条件:

{#if posts.length > 0}
    <ul>
        {#each posts as post}
            <li>{post.title}</li>
        {/each}
    </ul>
{:else}
    <p>No posts found.</p>
{/if}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 13:40:27