【问题标题】:EJS does not render value returned from res.renderEJS 不渲染从 res.render 返回的值
【发布时间】:2017-11-08 14:55:56
【问题描述】:

我的页面重定向正确,但是当我要在前端列出这个结果时,在我的前端视图中不只显示 EJS 的命令。

我尝试以几种不同的方式传递输出值,但都没有奏效......

这是我的根文件。

我的 index.js

var http = require('http');
var express    = require('express'),
    mongoose = require('mongoose'),
    ejs = require('ejs'),
    nunjucks   = require('nunjucks'),
    path = require('path'),
    mysql      = require('mysql'),
    bodyParser = require('body-parser'),
    methodOverride = require('method-override'),
    logger = require('morgan');
var errorHandler = require('errorhandler');

app.use(logger('dev'));
app.use(bodyParser());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

import config from "./config/config";
import mongodb from "./config/mongodb";
import passport from "./config/passport";
import * as setup from "./middleware/setup";

import app from "./config/express";
import routes from "./routes";

import User from './models/User';

export function start() {

  return new Promise((resolve, reject) => {

    mongodb().then((db) => {

      let server = http.createServer(app);

      // save references
      app.db = db;
      app.server = server;
      app.config = config;

      // init passport
      passport(app);

      // register setup check middleware
      app.use(setup.check);

      // setup routes
      routes(app);

      // start server
      app.server.listen(config.server.port, (err) => {
        if (err) {
          return reject(err);
        }
        resolve(app);
      });
    }, reject);
  });
};

app.set('views', __dirname + '/templates');
app.engine('html', require('ejs').renderFile);

var api = express.Router();
app.use('/', api);

api.get('/test-ejs', function (req, res) {
  res.render('test.html', { title: 'Return sucess!' });
});

api.get("/templates",function(req, res){
  var path = __dirname + '/templates/';
  res.sendFile(path + "index.html");
});

我的 HTML 模板 test.html

<!DOCTYPE html>  
<html lang="en">  
  <head>
    <meta charset="utf-8">
    <title>Test EJS</title>
    <meta name="description" content="">
    <meta name="author" content="">

    <!-- HTML5 shim, for IE6-8 support of HTML elements -->
    <!--[if lt IE 9]>
      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->

    <!-- styles -->
    <link href="stylesheets/style.css" rel="stylesheet">

  </head>
  <body>
    <%= title %>
  </body>
</html> 

感谢您帮助我! xD

【问题讨论】:

标签: node.js express ejs


【解决方案1】:

您正在使用 .html 文件来呈现数据,但在您的 app.js 中,您已将其定义为 app.engine 行下的 .ejs。

因此,您要么将 .html 文件类型更改为 .ejs,要么必须将 app.engine 行替换为此

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

【讨论】:

    猜你喜欢
    • 2013-03-04
    • 1970-01-01
    • 2021-11-13
    • 2014-04-07
    • 1970-01-01
    • 2018-01-12
    • 1970-01-01
    • 2018-12-26
    • 1970-01-01
    相关资源
    最近更新 更多