You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开启ng-strict-di模式后$httpBackend undefined报错如何解决?

解决方案

该问题是ng-strict-di模式下依赖注入规则和模块依赖缺失两个原因共同导致的,按以下步骤修复即可:

  1. 确认主模块已引入ngMockE2E依赖
    $httpBackend服务由ngMockE2E模块提供,必须在模块定义时显式声明依赖,否则服务本身不存在:
angular.module('app', [/* 你的其他业务依赖 */, 'ngMockE2E'])

注:请确认angular-mocks.js脚本已经正确引入到页面中,否则ngMockE2E模块无法正常加载。

  1. 给run块添加显式依赖注解
    strict DI模式下禁止通过参数名隐式推断依赖,必须用以下两种方式之一显式声明依赖:
  • 数组注解写法(兼容性最高)
angular.module('app').run(['$httpBackend', 'ServerDataModel', function($httpBackend, ServerDataModel) {
    $httpBackend.whenGET('/games').respond(function(method, url, data) {
        var games = ServerDataModel.findAll();
        return [200, games, {}];
    });
}]);
  • $inject属性写法
var runBlock = function($httpBackend, ServerDataModel) {
    $httpBackend.whenGET('/games').respond(function(method, url, data) {
        var games = ServerDataModel.findAll();
        return [200, games, {}];
    });
}
runBlock.$inject = ['$httpBackend', 'ServerDataModel'];
angular.module('app').run(runBlock);

如果你使用了带ng-annotate能力的构建工具,也可以给函数添加/* @ngInject */注释,由构建工具自动生成注解。

内容的提问来源于stack exchange,提问作者dale thompson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 11:15:03