UPDATE nicht kompilieren: habe ich versucht, Jeff Barczewski Antwort unten, und obwohl ich nicht mehr die Fehler unten für Plugins, ich bin jetzt eine andere Störung zu erhalten:Requirejs kann mein Dojo-abhängigen Modul
Error: TypeError: Cannot read property 'normalize' of undefined
In module tree:
mymodule/core
at Object.<anonymous> (/usr/local/lib/node_modules/requirejs/bin/r.js:1193:35)
UPDATE 2: Da Jeff richtig ist, dass die Plugins von Dojo nicht mit RequireJS kompatibel sind, entschied ich mich für die Verwendung von grunt-dojo anstelle von Dojo. Ich verwende immer noch RequireJS für meinen eigenen Code und überschreibe einfach die Dojo-Abhängigkeiten, die ignoriert werden sollen.
Original-Beitrag:
Ich versuche, Grunzen zu verwenden, um eine einzelne JS-Datei kompilieren, um die Menge von HTTP-Anfragen Browser vornehmen müssen zu senken. Da Dojo 1.9 AMD-kompatibel ist, dachte ich mir, dass ich Grunts Requirejs-Plugin verwenden würde, um meinen Code zu optimieren. Ich bin jedoch die folgenden Fehler zu erhalten, sowohl bei Verwendung der Grunt-Plugin und wenn r.js direkt mit:
>> Tracing dependencies for: mymodule/core
>> TypeError: Cannot call method 'createElement' of undefined
>> In module tree:
>> mymodule/core
>> dojo/behavior
>> dojo/query
>> dojo/selector/_loader
{ [Error: TypeError: Cannot call method 'createElement' of undefined
In module tree:
mymodule/core
dojo/behavior
dojo/query
dojo/selector/_loader
at eval (eval at <anonymous> (/Users/EugeneZ/Workspace/presentment/web/js/node_modules/grunt-contrib-requirejs/node_modules/requirejs/bin/r.js:23690:38), <anonymous>:6:24)
]
originalError:
{ [TypeError: Cannot call method 'createElement' of undefined]
moduleTree:
[ 'dojo/selector/_loader',
'dojo/query',
'dojo/behavior',
'mymodule/core' ],
fileName: '/Users/EugeneZ/Workspace/presentment/web/js/dojo_release/dojo/selector/_loader.js' } }
auf dem Code der Suche nach dem _loader
Dojo-Modul, wird es vorausgesetzt, es ist in einem Browser ausgeführt wird und mich auf die document
global:
var document;
var testDiv = document.createElement("div");
Aber warum requirejs dies nicht zulassen? Ich habe ihre Dokumentation durchsucht und finde keine Möglichkeit, diesen Check abzubrechen. Ich gehe davon aus, dass ich etwas falsch verstehe oder etwas falsch mache, aber ich kann es nicht verstehen. Hier
ist die requirejs relevanten Teil meiner Gruntfile.js:
requirejs: {
compile: {
options: {
'baseUrl': './',
'paths': {
'dojo': 'dojo_release/dojo',
'dojox': 'dojo_release/dojox',
'dijit': 'dojo_release/dijit',
'mymodule' : 'core/mymodule',
'osi': 'osi',
'demo': 'demo',
'slick': 'core/slick'
},
'name': 'mymodule/core',
'out': './mymodule.js'
}
}
}
Haben Sie jemals eine Lösung für die "Kann nicht lesen Eigenschaft 'Normalisierung von undefinierten" Problem gefunden? –
habe ich nicht. Am Ende musste ich zurücktreten und mich fragen, warum ich r.js benutzen wollte. Ich habe gerade den Dojo-Builder benutzt, der sowieso viel mächtiger ist, obwohl es auch viel komplexer ist, was ich zuerst vermeiden wollte. – EugeneZ