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

在Next.js+React模板中使用react-vega渲染可视化遇语法错误求助

解决Next.js中使用react-vega出现「Server Error SyntaxError: Unexpected token '?'」的问题

这个错误的核心原因是Vega、react-vega相关依赖包中使用了可选链操作符(?)这类ES6+语法,而Next.js服务端渲染时默认不会转译第三方依赖,导致Node.js环境无法识别这些语法。以下是具体解决办法:

  • 转译Vega相关依赖包
    在next.config.js中配置transpilePackages(Next.js 13+支持),将Vega相关包加入转译列表:

    /** @type {import('next').NextConfig} */
    const nextConfig = {
      transpilePackages: ['vega', 'vega-lite', 'react-vega'],
    }
    
    module.exports = nextConfig
    

    若使用Next.js 12及以下版本,需要安装next-transpile-modules插件:

    1. 安装依赖:
      npm install next-transpile-modules --save-dev
      
    2. 修改next.config.js:
      const withTM = require('next-transpile-modules')(['vega', 'vega-lite', 'react-vega']);
      
      module.exports = withTM({
        // 你的其他Next.js配置项
      });
      
  • 强制组件仅在客户端渲染
    Vega依赖浏览器环境的DOM API,服务端渲染时无法正常运行,可通过Next.js的dynamic导入禁用SSR:

    import dynamic from 'next/dynamic';
    
    // 动态导入可视化组件,禁用服务端渲染
    const VegaChart = dynamic(() => import('./path/to/your/VegaComponent'), {
      ssr: false,
      loading: () => <div>加载可视化中...</div>
    });
    
    // 在页面组件中使用
    export default function VisualizationPage() {
      return <VegaChart />;
    }
    

内容的提问来源于stack exchange,提问作者Ivania Donoso Guzmán

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 04:16:02