javascript - Unknown provider: toasterProvider <- toaster <- RugHttpInterceptor <- $http <- ng1UIRouter -
i working on interceptors display toast msg if app caught http error in responseerror code. using angularjs interceptor. mean.js app.
interceptor code
angular.module('rugcopro') .factory('rughttpinterceptor', ['$q', 'session', '$state', 'toaster', function($q, session, $state, toaster) { return { 'request': function(config) { console.log("inside request."); return config; }, // optional method 'response': function(response) { // on response success console.log('inside of response'); return response; }, // optional method 'responseerror': function(rejection) { // here can in response error, handle errors, present error messages etc. if(rejection.status === 401){ console.log( "inside response error : "+ rejection.status); $state.go('auth'); } // console.log("inside response error " + rejection.status); return $q.reject(rejection); } }; }]); i trying find out solution stuck hours...
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'); ... } scripts , css using npm install , add in gruntfile.js
"node_modules/angularjs-toaster/toaster.css",
"node_modules/angularjs-toaster/toaster.js",
gruntfile.js
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']); }; 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 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> ...
the angularjs-toaster module missing main application:
angular.module('rugcopro', [ 'ngmaterial', 'ngmdicons', 'ui.router', 'toaster', // missing code 'e3-core-ui.services', 'e3-core-ui.utils' ]); you can view example angularjs-toaster readme:
// display info toast no title angular.module('main', ['toaster', 'nganimate']) .controller('mycontroller', function($scope, toaster) { $scope.pop = function(){ toaster.pop('success', "title", "text"); }; });
you'll need include angularjs-toaster module in main template (index.html). here's example documentation:
<script src="https://cdnjs.cloudflare.com/ajax/libs/angularjs-toaster/1.1.0/toaster.min.js"></script>
