Javascript 尝试使用jade呈现html文件,但它仍将其作为jade处理

Javascript 尝试使用jade呈现html文件,但它仍将其作为jade处理,javascript,node.js,express,pug,Javascript,Node.js,Express,Pug,我读过两篇文章,对我的问题进行了重新评价: http://stackoverflow.com/questions/4529586/render-basic-html-view-in-node-js-express http://stackoverflow.com/questions/12046421/how-to-configure-express-js-jade-to-process-html-files 我的代码如下: app.engine('.html', require('ja

我读过两篇文章,对我的问题进行了重新评价:

    http://stackoverflow.com/questions/4529586/render-basic-html-view-in-node-js-express
http://stackoverflow.com/questions/12046421/how-to-configure-express-js-jade-to-process-html-files
我的代码如下:

app.engine('.html', require('jade').__express);
app.set('views', __dirname + '/app/views');
app.set('view engine', 'html');
很明显,出于某种原因,它试图读取索引,就像它仍然是一个jade文件一样,因此我得到了错误。我相信我将其配置为正确的服务器.html文件。这里有什么问题?我迷路了

我试图重新排列这些行,但仍然出现相同的错误

但出于某种原因,我得到了这个错误:

Error: ....\views\index.html:4
    2| <html lang="en" ng-app="squashApp">
    3| <head>
  > 4|   <meta charset="utf-8">
    5|   <title>Squash Organizer</title>
    6|   <link rel="stylesheet" href="css/app.css"/>
    7|   <link rel="stylesheet" href="css/bootstrap.css"/>

unexpected token "indent"
    at Object.Parser.parseExpr (C:\Users\workspace\squash\node_modules\jade\lib\parser.js:241:15)
    at Object.Parser.parse (C:\Users\workspace\squash\node_modules\jade\lib\parser.js:133:25)
    at parse (C:\Users\workspace\squash\node_modules\jade\lib\jade.js:93:62)
    at Object.exports.compile (C:\Users\workspace\squash\node_modules\jade\lib\jade.js:156:9)
    at Object.exports.render (C:\Users\workspace\squash\node_modules\jade\lib\jade.js:210:15)
    at Object.exports.renderFile (C:\Users\workspace\squash\node_modules\jade\lib\jade.js:247:18)
    at View.exports.renderFile [as engine] (C:\Users\workspace\squash\node_modules\jade\lib\jade.js:232:21)
    at View.render (C:\Users\workspace\squash\node_modules\express\lib\view.js:76:8)
    at Function.app.render (C:\Users\workspace\squash\node_modules\express\lib\application.js:505:10)
    at ServerResponse.res.render (C:\Users\workspace\squash\node_modules\express\lib\response.js:756:7)
错误:..\views\index.html:4
2| 
3| 
> 4|   
5 |壁球组织者
6|   
7|   
意外标记“缩进”
在Object.Parser.parsexpr(C:\Users\workspace\squash\node\u modules\jade\lib\Parser.js:241:15)
在Object.Parser.parse(C:\Users\workspace\squash\node\u modules\jade\lib\Parser.js:133:25)
解析时(C:\Users\workspace\squash\node\u modules\jade\lib\jade.js:93:62)
在Object.exports.compile(C:\Users\workspace\squash\node\u modules\jade\lib\jade.js:156:9)
在Object.exports.render(C:\Users\workspace\squash\node\u modules\jade\lib\jade.js:210:15)
位于Object.exports.renderFile(C:\Users\workspace\squash\node\u modules\jade\lib\jade.js:247:18)
在View.exports.renderFile[作为引擎](C:\Users\workspace\squash\node\u modules\jade\lib\jade.js:232:21)
在View.render(C:\Users\workspace\squash\node\u modules\express\lib\View.js:76:8)
位于Function.app.render(C:\Users\workspace\squash\node\u modules\express\lib\application.js:505:10)
在ServerResponse.res.render(C:\Users\workspace\squash\node\u modules\express\lib\response.js:756:7)
谢谢。

用这句话:

app.engine('.html', require('jade').__express);
您告诉express使用jade渲染以
.html
结尾的模板

关于这一点:

app.set('view engine', 'html');
您告诉express,它应该将没有扩展名的模板名称解释为以
html
结尾的名称

所以我猜您正在尝试呈现
'index'
,express将其解释为
index.html
,然后按照指示传递给jade

最好将jade映射到它自己的extension(
。jade
是一个明显的候选者)。并使用它的全名呈现你的
index.html

  • 添加到您的项目中:

    var engines = require('consolidate');
    
  • 告诉jade渲染以
    结尾的内容。jade

    app.engine('jade', require('jade').__express);
    
  • 为以
    .html
    结尾的内容注册简单html呈现程序:

    app.engine('html', function(str, options) {
       return function(locals) {
           return str;
       };
    });
    
  • 告诉express将不带扩展名的模板渲染为jade:

    app.set('view engine', 'jade');
    
  • 使用此选项渲染索引:

    res.render('index.html');
    
    这是:

    res.render('view-name-without-extension'); 
    
    渲染翡翠模板


  • 默认情况下,express采用Jade模板引擎。你的app.js应该是这样的

    /**
     * Module dependencies.
     */
    
    var express = require('express')
      , routes = require('./routes')
      , user = require('./routes/user')
      , http = require('http')
      , path = require('path');
    
    var app = express();
    
    // all environments
    app.set('port', process.env.PORT || 3000);
    app.set('views', __dirname + '/views');
    app.set('view engine', 'jade'); // <<<---- CHANGES FROM EJS TO JADE !!!
    app.use(express.favicon());
    app.use(express.logger('dev'));
    app.use(express.bodyParser());
    app.use(express.methodOverride());
    app.use(app.router);
    app.use(express.static(path.join(__dirname, 'public')));
    
    // development only
    if ('development' == app.get('env')) {
      app.use(express.errorHandler());
    }
    
    app.get('/', routes.index);
    app.get('/users', user.list);
    
    http.createServer(app).listen(app.get('port'), function(){
      console.log('Express server listening on port ' + app.get('port'));
    });
    
    /**
    *模块依赖关系。
    */
    var express=require('express')
    ,routes=require(“./routes”)
    ,user=require(“./routes/user”)
    ,http=require('http')
    ,path=require('path');
    var-app=express();
    //所有环境
    应用程序集('port',process.env.port | | 3000);
    app.set('views','u dirname+'/views');
    
    app.set('view engine','jade');//如果您不想使用jade,您是否尝试过删除
    app.engine('.html',require('jade')。\uu express)行?为什么要呈现.html文件?它应该是静态的,而不是动态的。要么使用
    express.static
    要么按原样发送文件。我真的不知道该怎么办。请您进一步解释一下好吗?您必须运行“npm安装整合”。结果编辑在我的端,测试<代码>/*进一步升级*/var引擎=需要('合并');/*然后稍后*/app.engine('jade',require('jade')。\uu express);app.engine('html',函数(str,options){returnfunction(locals){returnstr;};});应用程序集(“查看引擎”、“翡翠”);app.use(express.static(path.join(uu dirname,'public'))这里唯一不同的是从ejs切换到Jade,对吗?