2016-06-01 20 views
0

Also, ich habe eine Willkommensseite mit Login-Taste, die ein Modal-Formular lädt auf Angular Js lädt. Es funktioniert einwandfrei, wenn ich die Seite "welcome.html" als eigenständige Seite in Google Chrome austrage.Arbeiten mit eckigen js, Node js server und express js

Jetzt habe ich ein Express-Js-Framework-Projekt erstellt und die .html zu .ejs geändert und zu Ansichten hinzugefügt und dann den Knoten-Server gestartet, der die welcome.ejs-Seite perfekt lädt.

Aber, wenn ich auf Anmelden klicken, es die folgenden Fehler in Konsole wirft ..

angular.js:11756 GET http://localhost:3000/views/login-popup.ejs 404 (Not Found) 

angular.js:11756 GET http://localhost:3000/views/login-popup.ejs 404 (Not Found)(anonymous function) @ angular.js:11756m @ angular.js:11517g @ angular.js:11227(anonymous function) @ angular.js:15961$eval @ angular.js:17229$digest @ angular.js:17045$apply @ angular.js:17337(anonymous function) @ angular.js:25023Qf @ angular.js:3456d @ angular.js:3444 
angular.js:13550 Error: [$compile:tpload] http://errors.angularjs.org/1.5.5/$compile/tpload?p0=%2Fviews%2Flogin-popup.ejs&p1=404&p2=Not%20Found 
    at Error (native) 
    at https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js:6:412 
    at https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js:156:158 
    at https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js:130:226 
    at n.$eval (https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js:144:467) 
    at n.$digest (https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js:142:47) 
    at n.$apply (https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js:145:249) 
    at l (https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js:97:55) 
    at H (https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js:101:190) 
    at XMLHttpRequest.u.onload (https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js:102:229) 

Dies ist, wie mein Eckige der Modal

app.controller('LoginController',['$scope','$uibModal', function($scope,$uibModal){ 
     $scope.name = 'a100'; 
     $scope.loginModal = function(){ 
      var modalInstance = $uibModal.open({ 
        animation: 'true', 
        templateUrl: '/views/login-popup.ejs', 
        controller: 'LoginModalController' 
      }); 
     }; 
}]); 

Node-Code laden:

app.get('/',function(res,req){ 
    res.render('welcome'); 
}); 

var server = app.listen(3000); 
console.log("Server Started at port 3000"); 

Ich bin ganz neu zu Node und Angular und auch Express-Framework. Kannst du mich bitte hier führen?

Danke für Ihre Zeit.

S.S: Ich habe versucht, die /views auch zu entfernen.

+0

Es scheint, dass der Webclient die Datei login-popup.ejs nicht finden kann. Hast du den Knotencode? (Reim nicht gemeint ^^) –

+1

hier ist ein kurzer Link auf statische Dateien mit ausdrücklichen http://expressjs.com/en/starter/static-files.html –

+1

zur Frage hinzugefügt. Das ist der einzige Knotencode, den ich zu app.js hinzugefügt habe, abgesehen von dem Standardcode, der generiert wird – Spark

Antwort

2

Es scheint, dass Sie Ihre statischen Dateien (css, js) nicht offengelegt haben.

This article erläutert, wie dies mit Express zu tun ist.

Und hier ist der Code schnell (Kopieren und Einfügen von Artikeln)

app.use(express.static('public')); 

Was das bedeutet ist, dass der Ordner Öffentlichkeit auf die Bahn zu beginnen ausgesetzt werden.

Express sucht die Dateien relativ zum statischen Verzeichnis, daher ist der Name des statischen Verzeichnissesnicht Teil der URL.

+0

Danke. Das funktioniert (Reim gemeint;)) – Spark

+1

@Spark - wenn Sie diese Lösung wählen, würde ich gerne für Sie, um es als die Antwort zu markieren. –