这么长的故事简短 - 我在尝试将旧项目中的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仍在抱怨使用'旧'定义函数的代码。
提前感谢所有能够阐明这一点的人!
答案 0 :(得分:0)
修复此问题,手动解决main.js中的冲突
if( typeof define !== 'undefined' ) {
myApp = {
define : define
};
define = void 0;
}