Estoy tratando de ejecutar la encuesta simple usando SurveyJS y requireJS no la carga. No hay ningún error al cargar, pero no está definido dentro del cuerpo de la función de definición.
Intenté usar la propiedad de exportación de shim, sin embargo, el resultado fue el mismo.
¿Qué posiblemente estoy haciendo mal?
índice.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"]);principal.js
define(["Survey"], function (Survey) { console.log(Survey); // undefined });índice.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>Resulta que cada módulo puede tener su propio nombre dentro de la biblioteca. Para SurveyJS es survey-jquery . Y no requiere el uso de shim parte de requirejs.
Tuve que mirar la parte inicial de la biblioteca donde la define. Además, requiere que jQuery se defina como 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"]); } Se cambió index.js como se muestra a continuación.
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", }, }); Como el nombre del módulo importado ha cambiado, también cambió main.js
define(["survey-jquery"], function (Survey) { console.log(Survey); // Module {...} });