angularjs - "Uncaught Error: [$injector:unpr]"部署后有 Angular

标签 angularjs

我有一个相当简单的 Angular 应用程序,它在我的开发计算机上运行得很好,但在部署它后失败并显示此错误消息(在浏览器控制台中):

未捕获错误:[$injector:unpr] http://errors.angularjs.org/undefined/$injector/unpr?p0=tProvider%20%3C-%20t%20%3C-%20% 24http%20%3C-%20%24编译

除此之外没有其他消息。它发生在页面首次加载时。

我正在运行 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 时,我可以重现它。

最佳答案

如果您点击链接,它会告诉您错误是由于 $injector 无法解析您的依赖项而导致的。当 javascript 被缩小/丑化/无论你在生产中对其执行什么操作时,这是 Angular 的一个常见问题。

问题是当你有例如一个 Controller ;

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

缩小将 $scope$q 更改为随机变量,不告诉 Angular 要注入(inject)什么。解决方案是像这样声明您的依赖项:

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

这应该可以解决您的问题。

重申一下,我所说的一切都在错误消息提供给您的链接中。

关于angularjs - "Uncaught Error: [$injector:unpr]"部署后有 Angular ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19671962/

相关文章:

javascript - AngularJS 中的搜索表单和 URL 参数

javascript - Angular ,交换数组中的内容,如何管理第一个和最后一个

javascript - Angular Typeahead 保存 ID

angularjs - 使用 ClarityIcons 时无法在 'define' 上执行 'CustomElementRegistry'

javascript - soundcloud 搜索 api 忽略持续时间过滤器?

angularjs - Angular 2通过服务器API加载数据: data.切片错误

javascript - 自动完成——颜色输入建议文本

javascript - Angular JS 中的 For Each 循环

angularjs - 使用 AngularJS 的小部件框架

javascript - SVG 污染 Canvas IE 安全错误 toDataURL