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

在Next.js应用中嵌入Orbeon表单时遇ORBEON未定义错误求助

解决Next.js嵌入Orbeon表单时"ORBEON is undefined"的问题
  • 先加载Orbeon的JavaScript API脚本
    ORBEON对象是由Orbeon官方提供的脚本注入的,必须确保该脚本在调用embedForm前加载完成。在Next.js里有两种实现方式:

    1. 在页面头部静态引入脚本
      在页面的Head组件中添加脚本标签,路径需匹配你的Orbeon部署地址:
      import Head from 'next/head';
      
      function JobApplicationForm() {
        return (
          <>
            <Head>
              <script src="/orbeon/xforms-server.js" type="text/javascript"></script>
            </Head>
            <div id="my-container-element"></div>
          </>
        );
      }
      
      export default JobApplicationForm;
      
    2. 动态加载脚本(按需加载场景)
      用useEffect在组件挂载时动态创建脚本,确保脚本加载完成后再执行表单嵌入逻辑:
      import { useEffect } from 'react';
      
      function JobApplicationForm() {
        useEffect(() => {
          const loadOrbeonScript = () => {
            return new Promise((resolve, reject) => {
              const script = document.createElement('script');
              script.src = '/orbeon/xforms-server.js';
              script.type = 'text/javascript';
              script.onload = resolve;
              script.onerror = reject;
              document.body.appendChild(script);
            });
          };
      
          loadOrbeonScript()
            .then(() => ORBEON.fr.API.embedForm(
              document.getElementById("my-container-element"),
              "/orbeon",
              "human-resources",
              "job-application",
              "new"
            ))
            .then(() => console.log("`embedForm()` successfully loaded the form"))
            .catch(e => {
              console.log("`embedForm()` returned an error");
              console.log(e);
            });
        }, []);
      
        return <div id="my-container-element"></div>;
      }
      
      export default JobApplicationForm;
      
  • 验证脚本路径与跨域配置
    确认脚本src路径和Orbeon实际部署路径一致:如果Orbeon部署在独立域名,需使用完整绝对URL,同时确保Orbeon服务器配置了CORS,允许你的Next.js域名加载该脚本。

  • 适配Next.js SSR/SSG场景
    若页面采用服务端渲染(SSR)或静态生成(SSG),不能在组件初始化阶段直接调用ORBEON——此时浏览器环境尚未加载脚本。上述useEffect方案可避免这个问题,因为它仅在客户端渲染阶段执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 03:34:55