配置 Require js 加载 AMD 模块 javascript

Configuring Require js to load AMD modules in javascript

我刚开始使用 gulp、mocha、chai 编写测试用例来测试我的 javascript 文件。

我的文件目录

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

utils/ChangePos.js

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

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

它依赖于配置和元素文件。

test/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();
            });
        });

我正在尝试通过指定加载依赖于 ElementConfigChangePos路径 'utils'。

utils: 'utils'

我可以通过将 baseURL 指定为 baseUrl:'./../_src/scripts/ui/utils' 来显式加载元素,但这里它仅在 ui 文件夹内检查并给出未定义的对象。

如果我将所有文件都放在 ui 文件夹中,它会起作用,因为它正在考虑基础 URL 并且只在基础文件夹中查找。

我不确定我在这里错过了什么。 感谢您的帮助。

查看您的配置,我没有看到允许 ChangePos 加载 utils/Element 作为 Elementutils/Config 作为 Config。特别是,paths 配置 'utils': 'utils' 不会执行此操作,并且对您拥有的特定配置根本不执行任何操作。要获得您必须工作的代码,您必须 paths 是:

paths: {
    'Config': 'utils/Config',
    'Element': 'utils/Element'
}