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

问题描述 投票:0回答:2

我正在尝试使用 SurveyJS 运行简单的调查,但 requireJS 没有加载它。加载时没有错误,但在define函数体内未定义。

我尝试过使用shim的exports属性,但结果是一样的。

我可能做错了什么?

index.js

requirejs.config({
  paths: {
    app: "./",
    jquery: 'https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min',
    Survey: "https://unpkg.com/[email protected]/survey.jquery.min",
  },
  shim: {
    Survey: {
      deps: ['jquery'],
    }
  }
});

requirejs(["main"]);

main.js

define(["Survey"], function (Survey) {
  console.log(Survey); // undefined
});

index.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/[email protected]/modern.css" type="text/css" rel="stylesheet"/>
</head>
javascript jquery requirejs surveyjs
2个回答
0
投票

事实证明,每个模块在库中都可以有自己的名称。对于 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/[email protected]/dist/jquery.min',
    'survey-jquery': "https://unpkg.com/[email protected]/survey.jquery.min",
  },
});

由于导入的模块名称变了,所以也变了

main.js

define(["survey-jquery"], function (Survey) {
  console.log(Survey); // Module {...}
});

0
投票

我也面临着同样的问题。请帮忙。

© www.soinside.com 2019 - 2024. All rights reserved.