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

Vite+React部署/构建后出现空白白屏问题求助

部署后React+Vite+Clerk网站空白白屏的修复方案

你的代码存在多处关键缺失和语法错误,这是导致页面空白的核心原因,以下是具体修复步骤:


1. Main.jsx:补全核心组件渲染逻辑

当前Main.jsx的ReactDOM.createRoot内部是空的,完全没有渲染App和ClerkProvider,这直接导致页面无内容输出。同时要确保Clerk的发布密钥正确传入:

import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App.jsx';
import './index.css';
import { ClerkProvider } from '@clerk/clerk-react';

// 正确获取Vite环境变量
const publishableKey = import.meta.env.VITE_CLERK_PUBLISHABLE_KEY;

console.log('Environment check:', { hasClerkKey: !!publishableKey, nodeEnv: import.meta.env.MODE });

ReactDOM.createRoot(document.getElementById('root')).render(
  <React.StrictMode>
    {/* 包裹ClerkProvider并传入密钥 */}
    <ClerkProvider publishableKey={publishableKey}>
      <App />
    </ClerkProvider>
  </React.StrictMode>
);

2. App.jsx:修复路由配置并渲染路由

你的路由配置存在语法错误(中文引号、未闭合的Route标签),且App组件没有返回路由提供者RouterProvider,导致路由和页面内容无法渲染:

import { createBrowserRouter, createRoutesFromElements, Route, RouterProvider } from 'react-router-dom';
import { SignedIn, SignedOut, RedirectToSignIn } from '@clerk/clerk-react';
import Home from './pages/Home.jsx';
import Chat from './pages/Chat.jsx';
import { Toaster } from 'react-hot-toast';
import TalktoCode from './pages/TalktoCode.jsx';
import { CodeProvider } from './hooks/CodeContext.jsx';

const router = createBrowserRouter(
  createRoutesFromElements(    
    <>
      {/* 首页路由:未登录重定向到登录页,已登录显示Home */}
      <Route index element={
        <>
          <SignedOut>
            <RedirectToSignIn />
          </SignedOut>
          <SignedIn>
            <Home />
          </SignedIn>
        </>
      } />
      {/* Chat路由:仅已登录用户可访问 */}
      <Route
        path="chat"
        element={
          <>
            <SignedIn>
              <Chat />
            </SignedIn>
            <SignedOut>
              <RedirectToSignIn />
            </SignedOut>
          </>
        }
      />
      {/* TalktoCode路由:仅已登录用户可访问 */}
      <Route
        path="talktocode"
        element={
          <>
            <SignedIn>
              <CodeProvider>
                <TalktoCode />
              </CodeProvider>
            </SignedIn>
            <SignedOut>
              <RedirectToSignIn />
            </SignedOut>
          </>
        }
      />
    </>
  )
);

function App() {
  return ( 
    <>
      <RouterProvider router={router} />
      <Toaster
          position="top-right"
          toastOptions={{
            style: {
              borderRadius: '20px',
              background: '#242323',
              color: '#fff',
            },
            success: {
              theme: {
                primary: '#65A0FB',
              },
            },
          }}
      />
    </>
  );
}

export default App;

额外注意事项

  • 确保所有引号使用英文半角引号(""或''),不要用中文引号(“”),否则会导致语法错误。
  • 部署时要确认Vite的环境变量VITE_CLERK_PUBLISHABLE_KEY已正确配置在部署平台(比如Vercel、Netlify的环境变量设置中)。
  • 检查Home.jsx、Chat.jsx等页面组件是否能正常渲染,排除组件自身的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 10:46:19