首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法使vash 0.8.0与express 4.12.3一起使用

无法使vash 0.8.0与express 4.12.3一起使用
EN

Stack Overflow用户
提问于 2015-03-22 06:30:18
回答 2查看 267关注 0票数 0

我正在努力学习node.js。我希望能够使用vash视图引擎,但由于某些原因,我无法使其工作。我看了一个关于Pluralsight的教程,并参考了vash文档,但我总是得到同样的错误。以下是我的代码

server.js:

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
<!DOCTYPE html>
<html>
    <head>
        <title>@model.title</title>
    </head>
    <body>
        <div>@html.block("body")</div>
    </body>
</html>

index.vash

代码语言:javascript
运行
复制
@html.extend('views/layout', function(model) { 

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

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

    })

})

堆栈跟踪:

代码语言:javascript
运行
复制
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文件位于项目根目录下的views文件夹中。

提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2015-03-24 04:10:02

对于每个this vash issue,应执行以下操作:

代码语言:javascript
运行
复制
var vash = require('vash');
vash.__express = vash.renderFile;
app.set("view engine", "vash");
票数 0
EN

Stack Overflow用户

发布于 2015-07-19 14:20:12

在index.vash中,只需使用“/layout”而不是“views/layout”即可。

这就是:

代码语言:javascript
运行
复制
@html.extend(**'/layout'**, function(model) { ... });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29188798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档