Javascript 未知提供程序:toasterProvider<;-烤面包机(&L;)Rughttp拦截器<;-$http<;-NG1外部
如果我的应用程序在responseError代码中发现http错误,我正在使用拦截器来显示toast消息。 我正在使用AngularJS拦截器。这是一个MEAN.JS应用程序 拦截器代码Javascript 未知提供程序:toasterProvider<;-烤面包机(&L;)Rughttp拦截器<;-$http<;-NG1外部,javascript,angularjs,node.js,angular-http-interceptors,angular-toastr,Javascript,Angularjs,Node.js,Angular Http Interceptors,Angular Toastr,如果我的应用程序在responseError代码中发现http错误,我正在使用拦截器来显示toast消息。 我正在使用AngularJS拦截器。这是一个MEAN.JS应用程序 拦截器代码 angular.module('rugCoPro') .factory('RugHttpInterceptor', ['$q', 'Session', '$state', 'toaster', function($q, session, $state, toaster) { return {
angular.module('rugCoPro')
.factory('RugHttpInterceptor', ['$q', 'Session', '$state', 'toaster',
function($q, session, $state, toaster) {
return {
'request': function(config) {
console.log("inside the request.");
return config;
},
// Optional method
'response': function(response) {
// do something on response success
console.log('inside of response');
return response;
},
// optional method
'responseError': function(rejection) {
// Here you can do something in response error, like handle errors, present error messages etc.
if(rejection.status === 401){
console.log( "inside the response error : "+ rejection.status);
$state.go('auth');
}
// console.log("inside the response error " + rejection.status);
return $q.reject(rejection);
}
};
}]);
错误:
我正试图找出解决办法,但几个小时后就被卡住了
app.js
angular.module('rugCoPro', [
'ngMaterial',
'ngMdIcons',
'ui.router',
'e3-core-ui.services',
'e3-core-ui.utils'
])
.config(['$stateProvider', '$routeProvider','$httpProvider','$mdThemingProvider', '$mdIconProvider', function($stateProvider, $routeProvider, $httpProvider, $mdThemingProvider, $mdIconProvider) {
//rug interceptor code
$httpProvider.interceptors.push('RugHttpInterceptor');
...
}
module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
concat: {
options: {
separator: ';'
},
dist: {
src: ['front-end/src/*.js', 'front-end/src/controllers/**/*.js', 'front-end/src/services/**/*.js'],
dest: 'public/js/<%= pkg.name %>.min.js'
},
lib:{
src: [
"node_modules/angular/angular.min.js",
"node_modules/angular-route/angular-route.min.js",
"node_modules/angular-aria/angular-aria.min.js",
"node_modules/angular-animate/angular-animate.min.js",
"node_modules/angular-material/angular-material.min.js",
"node_modules/moment/moment.min.js",
"front-end/lib/e3-core-ui.js",
**// angularjs -toaster
"node_modules/angularjs-toaster/toaster.min.js",**
"node_modules/angular-material-icons/angular-material-icons.min.js",
"node_modules/angular-ui-router/release/angular-ui-router.min.js"
],
dest: 'public/js/libs.min.js'
},
lib_debug:{
src: [
"node_modules/angular/angular.js",
"node_modules/angular-route/angular-route.js",
"node_modules/angular-aria/angular-aria.js",
"node_modules/angular-animate/angular-animate.js",
"node_modules/angular-material/angular-material.js",
"node_modules/moment/moment.js",
"front-end/lib/e3-core-ui.js",
**// angularjs -toaster
"node_modules/angularjs-toaster/toaster.js",**
"node_modules/angular-material-icons/angular-material-icons.js",
"node_modules/angular-ui-router/release/angular-ui-router.js"
],
dest: 'public/js/libs.js'
},
css:{
src:[
"node_modules/angular-material/angular-material.css",
"front-end/lib/e3-core-style.min.css",
"front-end/style/app.css",
**// angularjs -toaster
"node_modules/angularjs-toaster/toaster.css",**
],
dest:'public/css/lib.css'
}
},
uglify: {
options: {
banner: '/*! <%= pkg.name %> <%= grunt.template.today("dd-mm-yyyy") %> */\n'
},
dist: {
files: {
'public/js/<%= pkg.name %>.min.js': ['<%= concat.dist.dest %>']
}
}
},
});
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-jasmine');
grunt.loadNpmTasks('grunt-jasmine-node-new');
/*grunt.registerTask('cleanup', 'cleans build tmp files', function(){
var gruntConfig = grunt.config();
grunt.file.delete(gruntConfig.concat.dist.dest);
});*/
grunt.registerTask('default', ['concat', 'uglify', 'jasmine_node', 'jasmine'/*, 'cleanup'*/]);
grunt.registerTask('debug', ['concat', 'jasmine_node', 'jasmine']);
};
脚本和css
使用npm安装和加载项gruntfile.js
“node_modules/angularjs toaster/toaster.css”,“node_modules/angularjs toaster/toaster.js” grunfile.js
angular.module('rugCoPro', [
'ngMaterial',
'ngMdIcons',
'ui.router',
'e3-core-ui.services',
'e3-core-ui.utils'
])
.config(['$stateProvider', '$routeProvider','$httpProvider','$mdThemingProvider', '$mdIconProvider', function($stateProvider, $routeProvider, $httpProvider, $mdThemingProvider, $mdIconProvider) {
//rug interceptor code
$httpProvider.interceptors.push('RugHttpInterceptor');
...
}
module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
concat: {
options: {
separator: ';'
},
dist: {
src: ['front-end/src/*.js', 'front-end/src/controllers/**/*.js', 'front-end/src/services/**/*.js'],
dest: 'public/js/<%= pkg.name %>.min.js'
},
lib:{
src: [
"node_modules/angular/angular.min.js",
"node_modules/angular-route/angular-route.min.js",
"node_modules/angular-aria/angular-aria.min.js",
"node_modules/angular-animate/angular-animate.min.js",
"node_modules/angular-material/angular-material.min.js",
"node_modules/moment/moment.min.js",
"front-end/lib/e3-core-ui.js",
**// angularjs -toaster
"node_modules/angularjs-toaster/toaster.min.js",**
"node_modules/angular-material-icons/angular-material-icons.min.js",
"node_modules/angular-ui-router/release/angular-ui-router.min.js"
],
dest: 'public/js/libs.min.js'
},
lib_debug:{
src: [
"node_modules/angular/angular.js",
"node_modules/angular-route/angular-route.js",
"node_modules/angular-aria/angular-aria.js",
"node_modules/angular-animate/angular-animate.js",
"node_modules/angular-material/angular-material.js",
"node_modules/moment/moment.js",
"front-end/lib/e3-core-ui.js",
**// angularjs -toaster
"node_modules/angularjs-toaster/toaster.js",**
"node_modules/angular-material-icons/angular-material-icons.js",
"node_modules/angular-ui-router/release/angular-ui-router.js"
],
dest: 'public/js/libs.js'
},
css:{
src:[
"node_modules/angular-material/angular-material.css",
"front-end/lib/e3-core-style.min.css",
"front-end/style/app.css",
**// angularjs -toaster
"node_modules/angularjs-toaster/toaster.css",**
],
dest:'public/css/lib.css'
}
},
uglify: {
options: {
banner: '/*! <%= pkg.name %> <%= grunt.template.today("dd-mm-yyyy") %> */\n'
},
dist: {
files: {
'public/js/<%= pkg.name %>.min.js': ['<%= concat.dist.dest %>']
}
}
},
});
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-jasmine');
grunt.loadNpmTasks('grunt-jasmine-node-new');
/*grunt.registerTask('cleanup', 'cleans build tmp files', function(){
var gruntConfig = grunt.config();
grunt.file.delete(gruntConfig.concat.dist.dest);
});*/
grunt.registerTask('default', ['concat', 'uglify', 'jasmine_node', 'jasmine'/*, 'cleanup'*/]);
grunt.registerTask('debug', ['concat', 'jasmine_node', 'jasmine']);
};
module.exports=函数(grunt){
grunt.initConfig({
pkg:grunt.file.readJSON('package.json'),
康卡特:{
选项:{
分隔符:';'
},
地区:{
src:['front-end/src/*.js'、'front-end/src/controllers/**.js'、'front-end/src/services/**.js'],
dest:'public/js/.min.js'
},
库:{
src:[
“node_modules/angular/angular.min.js”,
“node_modules/angular route/angular route.min.js”,
“node_modules/angular aria/angular aria.min.js”,
“node_modules/angular animate/angular animate.min.js”,
“node_modules/angular material/angular material.min.js”,
“node_modules/moment/moment.min.js”,
“前端/lib/e3核心ui.js”,
**//angularjs-烤面包机
“node_modules/angularjs toaster/toaster.min.js”**
“节点_模块/角度材质图标/角度材质图标.min.js”,
“节点\模块/angular ui router/release/angular ui router.min.js”
],
dest:'public/js/libs.min.js'
},
lib_调试:{
src:[
“node_modules/angular/angular.js”,
“node_modules/angular route/angular route.js”,
“node_modules/angular aria/angular aria.js”,
“节点_模块/angular animate/angular animate.js”,
“node_modules/angular material/angular material.js”,
“node_modules/moment/moment.js”,
“前端/lib/e3核心ui.js”,
**//angularjs-烤面包机
“node_modules/angularjs toaster/toaster.js”**
“节点_模块/角度材质图标/角度材质图标.js”,
“节点\模块/angular ui router/release/angular ui router.js”
],
dest:'public/js/libs.js'
},
css:{
src:[
“节点\模块/角度材质/角度材质.css”,
“前端/lib/e3核心样式.min.css”,
“前端/style/app.css”,
**//angularjs-烤面包机
“node_modules/angularjs toaster/toaster.css”**
],
dest:'public/css/lib.css'
}
},
丑陋的:{
选项:{
横幅:'/*!*/\n'
},
地区:{
档案:{
'public/js/.min.js':['']
}
}
},
});
grunt.loadNpmTasks(“grunt-contrib-uglify”);
grunt.loadNpmTasks(“grunt-contrib-concat”);
grunt.loadNpmTasks(“grunt-contrib-jasmine”);
loadNpmTasks('grunt-jasmine-node-new');
/*registerTask('cleanup','cleans build tmp files',function(){
var gruntConfig=grunt.config();
grunt.file.delete(gruntConfig.concat.dist.dest);
});*/
registerTask('default',['concat','uglify','jasmine_node','jasmine'/*,'cleanup'*/]);
registerTask('debug',['concat','jasmine_node','jasmine']);
};
index.html
<html>
<head>
<% include partials/header.ejs %>
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no" />
<link rel="stylesheet" href="/css/lib.css">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
</head>
<body ng-app="rugCoPro" ng-controller="MainController as ctrl" layout="column">
<!script src="https://cdnjs.cloudflare.com/ajax/libs/angularjs-toaster/1.1.0/toaster.min.js"></script>
<script src="/js/libs.js"></script>
<script src="/js/rugcopro.min.js"></script>
...
...
通常这是因为它没有包含在.html中
在angular.js加载后,确保已加载:
<script src="https://cdnjs.cloudflare.com/ajax/libs/angularjs-toaster/1.1.0/toaster.min.js"></script>
主应用程序中缺少模块:
angular.module('rugCoPro', [
'ngMaterial',
'ngMdIcons',
'ui.router',
'toaster', // This was missing from your code
'e3-core-ui.services',
'e3-core-ui.utils'
]);
您可以从以下位置查看示例:
您还需要在主模板(index.html
)中包含angularjs toaster
模块。以下是文档中的一个示例:
toast服务和拦截器附件在哪里?@ItaloAyres I在app.js
$httpProvider.interceptors.push('rughtpinterceptor')中附加了拦截器
和angularjs toaster是使用Grunfile.js连接的。您是否将toaster模块注入到您的模块中?如果你可以编辑你的问题并添加相关代码,那么帮助会更容易。是的,我做了。我更新了问题。可以发布你的grunfile.js
的代码吗?这将帮助我们了解库是如何包含在您的项目中的。mates,我使用npm安装angularjs toaster,然后使用grunt添加脚本和css文件。错误:[$injector:modulerr]未能实例化模块rugCoPro,原因是:[$injector:modulerr]未能实例化模块toaster,原因是:[$injector:nomod]“烤面包机”模块不可用!您要么拼错了模块名,要么忘记加载它。如果注册模块,请确保将依赖项指定为第二个参数。http://errors.angularjs.org/1.5.6/$injector/nomod?p0=烤面包机
我收到此错误