Ho un set di oggetti che vengono utilizzati lato browser ma testati lato server con moka. Sto usando require.js per il caricamento di AMD. Il sito suggerisce di utilizzare Require.js amdefine sul lato server per ottenere i moduli definiti di lavorare in node.js con questo pezzo di codice:è possibile impostare amdefine nei test in modo che non debba definirlo in tutti i miei file di modulo?
if (typeof define !== 'function') {
var define = require('amdefine')(module)
}
OK. Ma devo inserirlo in ogni modulo che voglio usare nel Nodo. Nel mio caso ciò significa che devo toglierlo da qualsiasi codice che sto usando lato client (la maggior parte).
Mi chiedo se ci sia un modo per mettere quel pezzo di codice nel mio test invece in modo che non devo metterlo nel mio codice lato client. Sembra stupido avere il codice nei miei file che sarà necessario solo per i test - ha più senso inserirlo nel codice di test. Tuttavia, quando faccio che ottengo un errore:
Error: amdefine with no module ID cannot be called more than once per file.
at runFactory (/home/vmplanet/dev/alpha/web/node_modules/amdefine/amdefine.js:159:23)
at define (/home/vmplanet/dev/alpha/web/node_modules/amdefine/amdefine.js:275:13)
at Object.<anonymous> (/home/vmplanet/dev/alpha/web/assets/src/coffee/delta/dataLayer.coffee:4:3)
at Object.<anonymous> (/home/vmplanet/dev/alpha/web/assets/src/coffee/delta/dataLayer.coffee:158:4)
at Module._compile (module.js:456:26)
at Object.loadFile (/usr/lib/node_modules/coffee-script/lib/coffee-script/coffee-script.js:179:19)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
Si tratta di un errore strano, dato che il codice amdefine è soltanto in un unico luogo - la parte superiore del file di test. C'è un modo per inserire questo codice amdefine nel mio test e solo il mio test e ottenere comunque i test per eseguire il lato server - senza dover togliere il codice amdefine dal lato client?
È molto interessante. Darò un'occhiata. Grazie per aver risposto a una domanda così polverosa come questa. – jcollum
Ho pensato che qualcuno potrebbe beneficiare. – Louis
https://github.com/ajaxorg/node-amd-loader è quello giusto? – jcollum