[英]Undefined error while loading SurveyJS using RequireJS
我正在尝试使用 SurveyJS 运行简单的调查,但它没有被 requireJS 加载。 加载时没有错误,但在定义函数的主体内未定义。
我曾尝试使用 shim 的 export 属性,但结果是一样的。
我可能做错了什么?
index.js
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'],
}
}
});
requirejs(["main"]);
main.js
define(["Survey"], function (Survey) {
console.log(Survey); // undefined
});
索引.html
<head>
<script data-main="index" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.5/require.min.js"></script>
<link href="index.css" rel="stylesheet" />
<link href="https://unpkg.com/survey-jquery@1.9.40/modern.css" type="text/css" rel="stylesheet"/>
</head>
事实证明,每个模块都可以在库中拥有自己的名称。 对于 SurveyJS,它是survey-jquery
。 它不需要使用 requirejs 的shim
部分。
必须查看定义它的库的开始部分。 此外,它需要将 jQuery 定义为jquery
。
function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory(require("jquery"));
else if(typeof define === 'function' && define.amd)
define("survey-jquery", ["jquery"], factory);
else if(typeof exports === 'object')
exports["survey-jquery"] = factory(require("jquery"));
else
root["Survey"] = factory(root["jQuery"]);
}
更改index.js
如下
require.config({
paths: {
app: "./",
jquery: 'https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min',
'survey-jquery': "https://unpkg.com/survey-jquery@1.9.40/survey.jquery.min",
},
});
由于导入的模块名称变了,所以改了main.js
define(["survey-jquery"], function (Survey) {
console.log(Survey); // Module {...}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.