requirejs使用define / require函数进行配置

时间:2016-02-02 00:44:32

标签: javascript requirejs karma-jasmine conflict

这么长的故事简短 - 我在尝试将旧项目中的requireJS与大量遗留代码集成时遇到问题,这些遗留代码具有与requireJS冲突的全局定义函数的定义。 当我加载这两个脚本时,karma / jasmine测试会出现问题。

karma.conf.js

files: [
  <lib that has define global function insight>
  ...
  webappJs + '/vendor/require.js',
  'src/test/js/test-main.js',
  ... 
]

测试main.js

var allTestFiles = [];
var TEST_REGEXP = /.*ng.*test\.js/i;

Object.keys(window.__karma__.files).forEach(function(file) {
    if (TEST_REGEXP.test(file)) {
        // Normalize paths to RequireJS module names.
        allTestFiles.push(file);
    }
});

var config = {
    appDir : '',
    baseUrl : '/base/src/main/webapp',
    dir: "lib",
    deps: allTestFiles,
    callback: window.__karma__.start,
    paths : {
        // Configure alias to full paths
        'angular' : 'lib/angular.min',
        'angularMock' : '/base/src/test/lib/angular-mocks',
        'requireLib': 'lib/require'
    },
    namespace: "appRequire",
    shim : {
        'angular' : {
            deps : [],
            exports : 'angular'
        },
        'angularMock' : {
            deps : ['angular']
        }
    },
    modules: [
        {
            name: "appRequire",
            include: ["requireLib"],
            create: true
        }
    ]
};

require.config (config);

所以据说现在我必须包含appRequire.js文件???但这是我不明白如何创建模块,谁将创建它的事情?我不应该将require.js包含在文件列表中

该文档没有说太多...它只是说我可以使用define / require函数作为appRequire.define和appRequire.require之后......但是这个机制是什么?我在这里想念什么?因为目前requirejs仍在抱怨使用'旧'定义函数的代码。

提前感谢所有能够阐明这一点的人!

1 个答案:

答案 0 :(得分:0)

修复此问题,手动解决main.js中的冲突

if( typeof define !== 'undefined' ) {
    myApp = {
       define : define
    };
    define = void 0;
}