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

使用RequireJS加载SurveyJS时出现Undefined错误求助

问题解决:RequireJS加载SurveyJS时Survey为undefined的修复

你的问题出在RequireJS没有正确识别SurveyJS的模块导出。SurveyJS jQuery版本采用UMD包装,在RequireJS环境下需要通过shim明确指定它的全局导出对象,即使你之前尝试过exports,可能是配置有误或者遗漏了关键细节。

正确配置方案

修改index.js中的RequireJS配置,为Survey的shim添加exports属性:

requirejs.config({
  paths: {
    app: "./",
    jquery: 'https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min',
    Survey: "https://unpkg.com/survey-jquery@1.9.40/survey.jquery.min",
  },
  shim: {
    Survey: {
      deps: ['jquery'],
      exports: 'Survey' // 必须指定全局导出的对象名
    }
  }
});

requirejs(["main"]);

为什么这样有效

  • SurveyJS jQuery版本加载完成后,会在全局作用域(window)下创建Survey对象
  • RequireJS的shim.exports配置就是告诉RequireJS:当这个依赖脚本加载完成后,把全局的Survey对象作为该模块的返回值传递给回调函数
  • deps: ['jquery']确保jQuery优先加载,满足SurveyJS对jQuery的依赖要求

额外排查点(如果修改后仍未解决)

  • 检查浏览器网络面板,确认SurveyJS的CDN脚本是否成功加载(HTTP状态码200)
  • 确认使用的SurveyJS版本与jQuery版本兼容(你当前的3.6.0和1.9.40是兼容的)
  • 检查全局作用域是否真的存在Survey对象:在浏览器控制台直接输入Survey,看是否能输出对象

修改完成后,main.js中的console.log(Survey)就能正确打印出SurveyJS的实例对象了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 23:15:16