AngularJS: Unchaught Error: Imansible istanziare il modulo?

Sono nuovo di AngularJS e sto elaborando alcuni documenti e tutorial da apprendere. La mia domanda è in riferimento alla serie di video di Egghead, questo video in particolare, che dimostra come mettere insieme un filtro di ricerca di base. Volevo usarlo in una vera app che sto costruendo per un amico con una piccola azienda produttrice di candele ma quando l’ho modificato per essere le sue candele piuttosto che il cast di Avengers (come demo nel video) ho ricevuto questo errore :

Errore non rilevato: [$ injector: modulerr] Imansible istanziare il modulo myApp a causa di:

Errore: [$ injector: nomod] Il modulo ‘myApp’ non è disponibile! Hai sbagliato a scrivere il nome del modulo o hai dimenticato di caricarlo. Se registri un modulo assicurati di specificare …

Ho copiato una versione redatta (solo 3 membri del cast nella serie) di ESATTAMENTE ciò che è nella demo video in un jsfiddle e ho scoperto che produce ancora lo stesso errore. (Per riferimento, la demo di Egghead è disponibile qui: http://www.thinkster.io/angularjs/ET1iee6rnm/angularjs-ngfilter ). Ho letto almeno una mezza dozzina di domande simili su questo sito finora e ho provato ogni soluzione offerta, ma nessuno di loro si è liberato di questo errore o ha fatto sì che la ricerca Avengers – che funziona bene nella demo video – funzioni effettivamente propriamente.

HTML:

{{actor.name}} {{actor.character}}

Javascript:

 var myApp = angular.module('myApp', []); myApp.factory('Avengers', function () { var Avengers = {}; Avengers.cast = [ { name: "Robert Downey Jr.", character: "Tony Stark / Iron Man" }, { name: "Chris Evans", character: "Steve Rogers / Captain America" }, { name: "Mark Buffalo", character: "Bruce Banner / The Hulk" } ]; return Avengers; }) function AvengersCtrl($scope, Avengers) { $scope.avengers = Avengers; } 

In poche parole, qualcuno può offrire una soluzione che funzionerà e si libererà di questo errore, oltre a spiegare in inglese semplice (non il livello di dottorato “Angular Obscurese”) che cosa lo causa (in poche parole) e cosa deve essere fatto per evitarlo?

Modifica: scusa, ma il link jsfiddle di cui sopra dal tutorial non è più attivo. Ho rimosso il collegamento interrotto. Il tutorial menzionato è ancora disponibile per la visualizzazione.

Prova a usare No Wrap – In Head o No wrap-in body nel tuo violino:

Working fiddle: http://jsfiddle.net/Q5hd6/

Spiegazione :

Angolare inizia a compilare il DOM quando il DOM è completamente caricato . Si registra il codice per eseguire onLoad (opzione onload in fiddle) => è troppo tardi per registrare il modulo myApp perché myApp inizia a compilare il DOM e vede angular che non c’è alcun modulo chiamato myApp e genera un’eccezione.

Usando No Wrap-In Head , il tuo codice appare così:

     

Lo script ha la possibilità di essere eseguito prima che angular inizi a compilare il DOM e il modulo myApp è già stato creato quando angular inizia a compilare il DOM.

Devi giocare con l’opzione di caricamento JSFiddle:

impostalo su ” No wrap - in body ” invece di "onload"

Working fiddle: http://jsfiddle.net/zQv9n/1/

Per le persone che hanno lo stesso errore con un codice simile:

 $(function(){ var app = angular.module("myApp", []); app.controller('myController', function(){ }); }); 

Rimozione di $ (function () {…}); risolto l’errore.

Per le persone che trovano questo vecchio post sul Web cercando il messaggio di errore, esiste un’altra ansible causa del problema.

Potresti avere un errore di battitura nella tua chiamata alla sceneggiatura, anche se hai già fatto le cose descritte nell’altra eccellente risposta. Quindi controlla per assicurarti di poter usare la giusta ortografia nei tag dello script.

Ho dovuto cambiare il file js, in modo da includere “function ()” all’inizio di esso, e anche “()” alla fine della riga. Questo ha risolto il problema

si scopre che ho ricevuto questo errore perché il mio modulo richiesto is not bundled in the minification prosses causa di errori di ortografia del percorso

quindi assicurati che il tuo modulo esista nel file js minificato (cerca una parola al suo interno per essere sicuro)