Node.js 未捕获错误:[$injector:unpr]未知提供程序:SessionInjector提供程序
我不熟悉angular js、loopback和nodejs 在angular应用程序中实现身份验证时,我遇到了下面提到的错误Node.js 未捕获错误:[$injector:unpr]未知提供程序:SessionInjector提供程序,node.js,angularjs,angularjs-directive,loopbackjs,Node.js,Angularjs,Angularjs Directive,Loopbackjs,我不熟悉angular js、loopback和nodejs 在angular应用程序中实现身份验证时,我遇到了下面提到的错误 Uncaught Error: [$injector:unpr] Unknown provider: sessionInjectorProvider <- sessionInjector <- $http <- $compile 您的代码中肯定至少有两个错误: angular.module('myApp',[])创建一个模块,而angular.mod
Uncaught Error: [$injector:unpr] Unknown provider: sessionInjectorProvider <- sessionInjector <- $http <- $compile
您的代码中肯定至少有两个错误:
angular.module('myApp',[])
创建一个模块,而angular.module('myApp')
调用该模块。这意味着在代码结束时,您将再次创建模块,从而丢失以前编写的内容
有不同的方式格式化此代码,解决此问题的方法是:
angular.module('myApp', [])
.factory('sessionInjectorProvider', ['SessionService', function(SessionService) {
var sessionInjector = {
request: function(config) {
if (!SessionService.isAnonymus) {
config.headers['x-session-token'] = SessionService.token;
}
return config;
}
};
return sessionInjector;
}])
.config(['$httpProvider', function($httpProvider) {
$httpProvider.interceptors.push('sessionInjectorProvider');
}]);
另外,如前所述,您正在混合使用“SessionInjectProvider”和“sessionInjector”-您的拦截器应该使用“SessionInjectProvider”,如我上面发布的代码所示。每次执行
angular.module('myApp',[])
模块是新创建的,以前注册到该模块的任何内容都将消失。您可能希望执行angular.module('myApp').config..
也必须将sessioninjectprovider
作为sessioninjectprovider
注入拦截器,因此请尝试angular.module('myApp').config(['$httpProvider',function($httpProvider){$httpProvider.interceptors.push('sessioninjectprovider');}]));代码>这两个更改是否仍然存在相同的问题。请尝试在plunker中复制此错误。。应该不难,只有两个街区。。你自己会得到线索的
angular.module('myApp', [])
.factory('sessionInjectorProvider', ['SessionService', function(SessionService) {
var sessionInjector = {
request: function(config) {
if (!SessionService.isAnonymus) {
config.headers['x-session-token'] = SessionService.token;
}
return config;
}
};
return sessionInjector;
}])
.config(['$httpProvider', function($httpProvider) {
$httpProvider.interceptors.push('sessionInjectorProvider');
}]);