requirejs 与 define/require 函数冲突
requirejs confilcts with define/require functions
长话短说 - 我在尝试将旧项目中的 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 仍在抱怨使用 'old' 定义函数的代码。
在此先感谢所有可以阐明这一点的人!
修复了此问题,手动解决了 main.js
中的冲突
if( typeof define !== 'undefined' ) {
myApp = {
define : define
};
define = void 0;
}
长话短说 - 我在尝试将旧项目中的 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 仍在抱怨使用 'old' 定义函数的代码。
在此先感谢所有可以阐明这一点的人!
修复了此问题,手动解决了 main.js
中的冲突if( typeof define !== 'undefined' ) {
myApp = {
define : define
};
define = void 0;
}