gpt4 book ai didi

javascript - 尝试使用 jade 渲染 html 文件,但它仍然将其定位为 jade

转载 作者:搜寻专家 更新时间:2023-10-31 23:38:58 25 4
gpt4 key购买 nike

我已经阅读了这两篇对我的问题进行重新分级的帖子:

    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)

谢谢。

最佳答案

用这一行:

app.engine('.html', require('jade').__express);

您告诉 express 使用 jade 渲染以 .html 结尾的模板。

有了这个:

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

你告诉 express 它应该将没有扩展名的模板名称解释为以 html 结尾的名称。

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

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

  1. 添加consolidate.js到你的项目:

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

    app.engine('jade', require('jade').__express);
  3. 为以 .html 结尾的内容注册简单的 html 渲染器:

    app.engine('html', function(str, options) {
    return function(locals) {
    return str;
    };
    });
  4. 告诉 express 将没有扩展名的模板呈现为 jade:

    app.set('view engine', 'jade');
  5. 使用它来呈现您的索引:

    res.render('index.html');

    还有这个:

    res.render('view-name-without-extension'); 

    渲染 Jade 模板。

关于javascript - 尝试使用 jade 渲染 html 文件,但它仍然将其定位为 jade,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18210532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com