Estoy usando Requirejs
para cargar el JavaScript en nuestra aplicación web. El problema es que estoy recibiendo un objeto undefined
que se pasa a un módulo que, cuando se usa en otros módulos, se instancia perfectamente.Objeto indefinido que se pasa a través de Requirejs
Bien, aquí está la configuración. Mi archivo main.js
cuales RequireJS se ejecuta en el arranque:
require.config({
baseUrl: "/scripts",
paths: {
demographics: "Demographics/demographics",
complaints: "Complaints/complaints",
}
});
require(["templates", "demographics", "complaints", "crossDomain"], function (templates, demographics, complaints) {
"use strict";
console.log("0");
console.log(demographics === undefined);
demographics.View.display();
});
Gran parte de la configuración se ha despojado a sólo los archivos principales de este problema.
Aquí es Demographics.js
:
define(["ko", "templates", "complaints", "globals", "underscore"], function (ko, templates, complaints, globals) {
// Stuff removed.
return {
View: view
};
});
y Complaints.js
define([
"demographics",
"ko",
"templates",
"complaints",
"visualeffects",
"globals",
"webservice",
"underscore",
"typewatcher",
"imagesloaded"],
function (demographics, ko, templates, complaints, visualeffects, globals, webservice) {
"use strict";
console.log("1");
console.log(demographics === undefined);
return {
View: view
};
});
El problema es el siguiente - en Complaints.js
el parámetro demographics
pasa a través de la configuración define
es undefined
. El cierre de sesión de la consola me dice que "demographics === undefined" es true
.
Sin embargo, cuando se ejecuta el archivo main.js, el parámetro demográfico que se le pasa no está indefinido, es, como se esperaba, un objeto instanciado.
Ahora estoy atascado ya que no puedo ver por qué en complaints.js
esa variable demográfica no está definida. ¿Alguien puede detectar lo que me estoy perdiendo por favor?
Ahh, exactamente lo que sospechaba, pero realmente no pensé que esto podría pasar (soy un novato real con estas cosas de AMD/requirejs :) Mi plan de acción es crear otro módulo que alojará el código para ambos los datos demográficos y las quejas. Eso significa que este nuevo módulo se usará para llamar al código de los otros dos archivos. Gracias por confirmar mis pensamientos. Lo probaré cuando tenga el tiempo. –