未捕获的错误:因果测验中的[$ injector:nomod]

时间:2019-07-31 17:13:53

标签: angularjs karma-jasmine

我在自己的文件中包含以下代码:

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')部分出了点问题,但这也从不会引起任何问题的现有文件中粘贴。

1 个答案:

答案 0 :(得分:0)

我尚不清楚原因,但我可以通过更改使其成为新模块来解决此问题:

angular.module('app')

收件人:

angular.module('JSONServerInterceptor', [])

我尚不清楚为什么能解决我的问题,原因是我的项目中还有其他多个使用angular.module('app')的文件,就像上面的代码一样,我什至尝试将代码粘贴到其中一个文件中这些文件-仍然导致测试错误。