2016-04-27 3 views
1

Я действительно новичок во всем MEAN-стеке и пытается создать приложение в openshift, но не может отобразить новую страницу.Render html with node.js

Я просто продолжаю получать эту ошибку и не могу решить ее ни с чем, с которой я столкнулся.

Моя ошибка: Не удалось найти представление «/ регистрация» в общедоступном каталоге

Он работает полностью нормально, чтобы отобразить страницу индекса с app.get («/», функ()) в сервере .js и попытался сделать то же самое с app.get ('/ register). Раньше у меня была такая же проблема с '/', но она была решена с помощью app.use (express.static (__ dirname + '/ public'));

Оба index.html и register.html находятся в общем каталоге.

Эти экстракты моего кода:

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'); 

ответ

2

Есть несколько вопросов.

1) Не используйте косую черту для файла 'register'. Это файл в папке /public, а не в папке или маршруте.

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

2) Вы создали jade как ваш двигатель рендеринга. Это означает, что вы будете обслуживать .jade файлов. Ваша общая папка должна иметь index.jade. И это должно выглядеть следующим образом:

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 

Несколько примечаний:

  • Нефрит HTML шаблонный движок, это относительно прямо вперед, см http://jade-lang.com/tutorial/.
  • Существует экспресс-генератор, который даст вам пример приложения, это отличная отправная точка: http://expressjs.com/en/starter/generator.html
  • Кстати, есть также HTML-2-Джейд конвертер, я считаю, это полезно иногда: http://html2jade.org/