繁体   English   中英

使用 RequireJS 加载 SurveyJS 时出现未定义错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM