Настройка Require js для загрузки модулей AMD в javascript

Я новичок в написании тестовых примеров для тестирования моих файлов javascript с использованием gulp, mocha, chai.

Мой каталог файлов

Project
|-- _src
|   `-- scripts
|       `-- ui
|           |-- ChangePos.js
|           |-- PosRenderer
|           `-- utils
|               |-- Element
|               `-- Config
`-- test
    `-- index.js

utils/ChangePos.js

 define(['Config',
            'Element',
            'PosRenderer'

] {
      function() {
      //mycode
      }
    });

Он зависит от файлов конфигурации и элементов.

тест /index.js

var requirejs = require("requirejs");
var chai = require('chai');
var expect = chai.expect;

requirejs.config({
    baseUrl: './../_src/scripts/ui',
    paths: {
        utils: 'utils'
    },

    nodeRequire: require,
    map: {
        '*': {
            'NIT.Cookie': 'utils/Element'
        }
    }
});

    describe('almeObjectConfig', function() {
        var ele, conf, obj;
        before(function (done) {
            requirejs(['utils/Config', 'utils/Element'],
                function (config, element) {
                    console.log('Configuration: ' + config);
                    console.log('Element: ' + element);
                ele = element;
                conf = config;
                done();
            });
        });

Я пытаюсь загрузить ChangePos, который зависит от Element и Config, указав путь 'utils'.

utils: 'utils'

Я могу загрузить элемент явно, указав baseURL как baseUrl:'./../_src/scripts/ui/utils', но здесь он проверяет только внутри папки ui и дает неопределенный объект.

Это работает, если я помещаю все файлы в папку ui, поскольку он рассматривает базовый URL-адрес и просматривает только базовую папку.

Я не уверен, что мне здесь не хватает. Спасибо за помощь заранее.


person Shagun    schedule 15.02.2016    source источник


Ответы (1)


Глядя на вашу конфигурацию, я не вижу ничего, что позволило бы ChangePos загружать utils/Element как Element и utils/Config как Config. В частности, paths конфигурация 'utils': 'utils' этого не делает, и вообще ничего не делает с той конкретной конфигурацией, которая у вас есть. Чтобы заставить код работать, вам нужно, чтобы paths было:

paths: {
    'Config': 'utils/Config',
    'Element': 'utils/Element'
}
person Louis    schedule 15.02.2016