【问题标题】:layout.ejs doesn't work on NodeJS app in Herokulayout.ejs 不适用于 Heroku 中的 NodeJS 应用程序
【发布时间】:2012-07-29 20:51:29
【问题描述】:

我有常用的 nodejs express 应用程序...

var express = require('express');

var app = express.createServer(
    express.bodyParser()
);

app.configure( function () {
    app.set('views', __dirname + '/views');
    app.set('view engine', 'ejs');
    app.use("/public", express.static(__dirname + '/public'));
});

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

我在 /views 文件夹中有一个 index.ejs 和 layout.ejs:

layout.ejs:

<!doctype html>
<html lang="en" manifest=""><head>
    <title>jQuery Plugin Demo</title>
</head>
<body>
    <div class="container container-fluid">
        <%- body %>
    </div>
</body>
</html>

index.ejs:

Hello world

index.ejs 仅呈现“Hello world”文本,而没有周围的 layout.ejs 包装器。 ejs 正在工作。它能够找到正确的 .ejs 模板,但它只是忽略了布局。我也尝试过将布局文件显式添加到应用程序..

app.set('view options', { layout:'layout.ejs' }); 

所有这些在本地都可以正常工作,但在 Heroku 上却不行。这是我的 package.json:

{
  "name": "in1-test",
  "version": "0.0.1",
  "author": "Iatek",
  "dependencies": {
    "express": ">=2.5.x",
    "ejs": ">=0.7.x"
  },
  "engines": {
    "node": "0.6.x"
  }
}

为什么不喜欢布局???谢谢

【问题讨论】:

    标签: node.js heroku express ejs


    【解决方案1】:

    正如 chovy 所说,如果您想升级到 Express 3.x,ejs-locals 可以帮助您处理这个问题。我在这里有一个 github 存储库,它为 Express 3.x、ejs 和 twitter 引导程序提供了一个引导项目:

    https://github.com/cacois/node-express-twitter-bootstrap

    它是新应用程序的良好起点,或者作为如何在 Express 3.x 中使用 ejs 布局的示例。

    【讨论】:

      【解决方案2】:

      我正在使用带有 ejs-locals 的 express 3.x,它运行良好。您只需指定要使用的布局:

      login.ejs

      <% layout('layout') -%>
      <form>...</form>
      

      layout.ejs

      <body>
      <h1>Hello</h1>
      <%- body %>
      </body>
      

      https://npmjs.org/package/ejs-locals

      【讨论】:

        【解决方案3】:

        当您部署到 Heroku 时,它会为您的所有依赖项执行 npm 安装;因为您已声明 express >=2.5.x,它将安装最新的 3.0.0_betax。 Express 3 不支持 ejs 中的布局(目前)。

        要修复删除 ">=" 并指定本地版本中的 express 版本。

        【讨论】:

        • 他们为什么不将现有的支持添加到新版本中?
        • Express 3 已经从头开始重写,它的新视图引擎架构意味着它可以扩展以插入其他视图引擎;通过一个简单的界面。我已经开始使用 Swig (paularmstrong.github.com/swig),非常棒。
        猜你喜欢
        • 1970-01-01
        • 2014-09-20
        • 2018-08-02
        • 2017-09-14
        • 2013-03-26
        • 1970-01-01
        • 1970-01-01
        • 2019-02-21
        • 1970-01-01
        相关资源
        最近更新 更多