2015-03-21 2 views
0

Я пытаюсь изучить node.js. Я хочу иметь возможность использовать механизм просмотра vash, но по какой-то причине я не могу заставить его работать. Я смотрел учебник по Pluralsight и ссылался на vash docs, но я продолжаю получать ту же ошибку. Вот мой кодНе удается получить vash 0.8.0 для работы с express 4.12.3

server.js:

var http = require('http'); 
 
var port = process.env.port || 1337; 
 

 
var express = require("express"); 
 
var app = express(); 
 

 
app.set("view engine", "vash"); 
 
app.get("/", function (req, res) { 
 
    res.render("index", { title: "Express + Vash" }); 
 
}); 
 

 
var server = http.createServer(app); 
 
server.listen(port);

layout.vash:

<!DOCTYPE html> 
 
<html> 
 
    <head> 
 
     <title>@model.title</title> 
 
    </head> 
 
    <body> 
 
     <div>@html.block("body")</div> 
 
    </body> 
 
</html>

index.vash

@html.extend('views/layout', function(model) { 
 

 
    @html.block("body", function(model) { 
 

 
     <h1>@model.title</h1> 
 
     <p>This id from the server</p> 
 

 
    }) 
 

 
})

в StackTrace:

TypeError: undefined is not a function 
 
    at View.render (C:\Users\Michael\Desktop\Node_Stuff\LearnNode\TheBoard\node_modules\express\lib\view.js:93:8) 
 
    at EventEmitter.app.render (C:\Users\Michael\Desktop\Node_Stuff\LearnNode\TheBoard\node_modules\express\lib\application.js:566:10) 
 
    at ServerResponse.res.render (C:\Users\Michael\Desktop\Node_Stuff\LearnNode\TheBoard\node_modules\express\lib\response.js:938:7) 
 
    at C:\Users\Michael\Desktop\Node_Stuff\LearnNode\TheBoard\server.js:9:9 
 
    at Layer.handle [as handle_request] (C:\Users\Michael\Desktop\Node_Stuff\LearnNode\TheBoard\node_modules\express\lib\router\layer.js:82:5) 
 
    at next (C:\Users\Michael\Desktop\Node_Stuff\LearnNode\TheBoard\node_modules\express\lib\router\route.js:110:13) 
 
    at Route.dispatch (C:\Users\Michael\Desktop\Node_Stuff\LearnNode\TheBoard\node_modules\express\lib\router\route.js:91:3) 
 
    at Layer.handle [as handle_request] (C:\Users\Michael\Desktop\Node_Stuff\LearnNode\TheBoard\node_modules\express\lib\router\layer.js:82:5) 
 
    at C:\Users\Michael\Desktop\Node_Stuff\LearnNode\TheBoard\node_modules\express\lib\router\index.js:267:22 
 
    at Function.proto.process_params (C:\Users\Michael\Desktop\Node_Stuff\LearnNode\TheBoard\node_modules\express\lib\router\index.js:321:12)

В .vash файлы в папку Видов которая находится в корневом каталоге проекта.

Заранее благодарен!

+0

Последних [пример VASH автора] (https://github.com/kirbysayshi/vash-express-example) терпит неудачу с более описательной ошибкой: '500 RangeError: Проблема при визуализации шаблон в строке 23, символ 1.' и т. д. –

ответ

0

Per this vash issue должно работать:

var vash = require('vash'); 
vash.__express = vash.renderFile; 
app.set("view engine", "vash"); 
+0

Исправлена ​​проблема с тиснением, и текущая версия (0.8.3) работает нормально. –

0

В вашем index.vash, просто используйте '/ макет' вместо 'Views/макете'.

То есть:

@html.extend(**'/layout'**, function(model) { ... }); 

 Смежные вопросы

  • Нет связанных вопросов^_^