2016-04-27 11 views
1

Ich bin wirklich neu in der gesamten MEAN-Stack und versuchen, eine Anwendung auf openshift erstellen, aber nicht eine neue Seite rendern können.Render html mit node.js

Ich bekomme immer nur diesen Fehler und kann es nicht lösen mit allem, was ich gegoogelt habe.

Mein Fehler: Fehler Ansicht zum Nachschlagen in öffentlichem Verzeichnis

Es funktioniert völlig in Ordnung "/ Register" auf die Indexseite mit app.get ('/', func()) in Server zu machen .js und versuchte genau dasselbe mit app.get ('/ register). Früher hatte ich das gleiche Problem mit '/', löste es aber mit app.use (express.static (__ dirname + '/ public'));

Sowohl index.html als auch register.html befinden sich im öffentlichen Verzeichnis.

Dies sind Auszüge aus meinem Code:

index.html

<body ng-app=""> 
    <div class="container" ng-controller="LoginController" > 
     <h1>Logg in</h1> 
     <input class="form-control" placeholder="ID"/> 
     <input class="form-control" placeholder="Password"/> 
     <button class="btn">Logga in</button> 
     <button ng-click="open()" class="btn">Register User</button> 
    </div> 
</body> 

logincontroller

function LoginController($scope, $http) { 
console.log("Hello from Login"); 

    $scope.open = function() { 
     console.log('open i login.js'); 
     $http.get('/register') 
    }; 
}; 

server.js

var express = require('express'); 
var fs  = require('fs'); 
var mongojs = require('mongojs'); 
var jade = require('jade') 

var app = express(); 
var cors = require('cors'); 
var bodyParser = require('body-parser'); 

app.use(express.static(__dirname + '/public')); 
app.use(express.bodyParser()); 

app.get('/env',function(req, res){ 
    res.json(process.env); 
}); 

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

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

app.set('view engine', 'jade'); 

Antwort

2

Es gibt ein paar Probleme.

1) Verwenden Sie keinen Schrägstrich für die Datei 'register'. Dies ist eine Datei im Ordner /public, nicht ein Ordner oder eine Route.

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

2) Sie haben festgelegt jade als Rendering-Engine. Dies bedeutet, dass Sie .jade Dateien dienen werden. Ihr Öffentlicher Ordner sollte index.jade haben. Und es sollte wie folgt aussehen:

html 
    body(ng-app='') 
    .container(ng-controller='LoginController') 
     h1 Logg in 
     input.form-control(placeholder='ID') 
     input.form-control(placeholder='Password') 
     button.btn Logga in 
     button.btn(ng-click='open()') Register User 

Ein paar Anmerkungen: