使用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
相关产品推荐
相关产品推荐

