javascript - 无法添加 "$localStorage"

标签 javascript angularjs node.js

我在app.js中开发方法,但出现此错误:未捕获错误:
[$injector:strictdi] 函数($rootScope, $q, $localStorage, $location) 未使用显式注释,无法在严格模式下调用 http://errors.angularjs.org/1.6.6/ $injector/strictdi?p0=函数(%24rootScope%2C%20%24q%2C%20%24localStorage%2C%20%24location)

angular.module('ppollitApp', [ngCookies, ngResource, ngSanitize, 'btford.socket-io', uiRouter,
      uiBootstrap, _Auth, account, admin, navbar, footer, main, constants, socket, util, profile, explore
    ])
      .config(routeConfig)
      .factory('authInterceptor', function($rootScope, $q, $localStorage, $location) {
        return {
          // Add authorization token to headers
          request: function(config) {
            config.headers = config.headers || {};
            if($localStorage.token) {
              config.headers.Authorization = 'Bearer ' + $localStorage.token;
            }
            return config;
          },

          // Intercept 401s and redirect you to login
          responseError: function(response) {
            if(response.status === 401) {
              $location.path('/login');
              // remove any stale tokens
              delete $localStorage.token;
              return $q.reject(response);
            } else {
              return $q.reject(response);
            }
          }
        };
      })

      .run(function($rootScope, $location, Auth) {
        'ngInject';
        // Redirect to login if route requires auth and you're not logged in

        $rootScope.$on('$stateChangeStart', function(event, next) {
          Auth.isLoggedIn(function(loggedIn) {
            if(next.authenticate && !loggedIn) {
              $location.path('/login');
            }
          });
        });
      });

    angular.element(document)
      .ready(() => {
        angular.bootstrap(document, ['ppollitApp'], {
          strictDi: true
        });
      });

    var module = angular.module('main', ['ppollitApp', 'ppollitApp.services']);

    module.config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
      $routeProvider.when('/', { templateUrl: '/login/login.html', controller: 'LoginController'});

      $locationProvider.html5Mode(true);
    }]);

最佳答案

该错误的含义正如其所言,该使用 DI 的函数未使用显式注释,无法在严格模式下调用。

The page that the error links to包含所有必要的信息。

考虑到ng-annotate已经用于DI注释,它应该是:

  ...
  .factory('authInterceptor', function($rootScope, $q, $localStorage, $location) {
    'ngInject';
    ...

关于javascript - 无法添加 "$localStorage",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46914153/

相关文章:

angularjs - Angular : How to get content from a custom div

javascript - Angularjs $window.open 弹出窗口被阻止

node.js ejs include 部分不起作用

node.js - AWS Cognito ListUsers InvalidParameterException 在自定义属性上使用 AttributesToGet

javascript - 如何在一个 div 中声明 ng-show 和 ng-hide

javascript - 如何在单击而不是悬停时打开 Superfish jQuery 菜单?

javascript - 是否有与 ECMAScript 6 Map 草案具有相同合约的 Map 实现?

javascript - IndexedDB 和关系

node.js - Sequelize 1 :n relation always empty array

javascript - 如何在html中保存日期