我在自己的文件中包含以下代码:
angular.module('app').config(['$httpProvider', function($httpProvider) {
if (window.localStorage.getItem('cmx.use-json-server') === 'true') {
const blacklist = window.localStorage.getItem('cmx.json-server-blacklist');
const JSONServerBlacklist = blacklist ? JSON.parse(blacklist) : [];
const JSON_SERVER_HOST = 'http://localhost:3000';
const extraMessage = JSONServerBlacklist.length > 0 ? `except for the following: ${JSONServerBlacklist.join(', ')}` : '';
console.warn(
`WARNING: you are using JSON server. All requests are being routed to ${JSON_SERVER_HOST} \n${extraMessage}`
);
$httpProvider.interceptors.push(['$q', function($q) {
return {
request: function (config) {
const url = config.url;
// ignore template requests
if (url.includes('.html') || JSONServerBlacklist.includes(url)) {
return config || $q.when(config);
}
config.url = JSON_SERVER_HOST + config.url;
return config || $q.when(config);
}
};
}]);
}
}]);
此代码可以正常工作,并且未经测试,但是当我在Karma中运行Jasmine测试时,文件存在会导致以下错误:
An error was thrown in afterAll
Uncaught Error: [$injector:nomod]
http://errors.angularjs.org/1.7.5/$injector/nomod?p0=app
当我将未经修改的.config()
块切入另一个js文件时,此问题就消失了。这是什么原因引起的?从错误消息中可以看出angular.module('app')
部分出了点问题,但这也从不会引起任何问题的现有文件中粘贴。
答案 0 :(得分:0)
我尚不清楚原因,但我可以通过更改使其成为新模块来解决此问题:
angular.module('app')
收件人:
angular.module('JSONServerInterceptor', [])
我尚不清楚为什么能解决我的问题,原因是我的项目中还有其他多个使用angular.module('app')
的文件,就像上面的代码一样,我什至尝试将代码粘贴到其中一个文件中这些文件-仍然导致测试错误。