一尘不染

部署完成后出现“未捕获的错误:[$ injector:unpr]”

angularjs

我有一个相当简单的Angular应用程序,可以在我的开发机上正常运行,但是在部署它后却出现此错误消息(在浏览器控制台中)失败:

Uncaught Error: [$injector:unpr] http://errors.angularjs.org/undefined/$injector/unpr?p0=tProvider%20%3C-%20t%20%3C-%20%24http%20%3C-%20%24compile

除此之外,没有其他消息。页面首次加载时会发生这种情况。

我正在运行ASP.NET MVC5,Angular 1.2RC3,并通过git推送到Azure。

谷歌搜索还没有发现任何有趣的东西。

有什么建议?

编辑:

我正在使用TypeScript,并用该$inject变量定义依赖项,例如:

export class DashboardCtrl {

    public static $inject = [
        '$scope',
        '$location',
        'dashboardStorage'
    ];

    constructor(
        private $scope: IDashboardScope,
        private $location: ng.ILocationService,
        private storage: IDashboardStorage) {
    }
}

我认为应该(或打算)解决在最小化期间​​出现的可能导致此错误的局部变量重命名问题。

就是说,这显然与缩小过程有关,因为当我BundleTable.EnableOptimizations = true在开发机器上进行设置时,就可以复制它。


阅读 273

收藏
2020-07-04

共1个答案

一尘不染

如果您单击链接,它将告诉您该错误是由于$
injector无法解析您的依赖关系而导致的。当javascript最小化/丑化/无论您要对其进行生产时,这是angular的常见问题。

问题是当你有一个控制器的时候。

angular.module("MyApp").controller("MyCtrl", function($scope, $q) {
  // your code
})

缩小更改$scope$q变成随机变量,该变量不会告诉angular要注入什么。解决方案是这样声明您的依赖项:

angular.module("MyApp")
  .controller("MyCtrl", ["$scope", "$q", function($scope, $q) {
  // your code
}])

那应该解决您的问题。

重申一下,我所说的只是错误消息提供给您的链接。

2020-07-04