EJS не отображает значение, возвращаемое из res.render

Я правильно получаю перенаправления страниц, однако, когда я собираюсь перечислить этот результат во внешнем интерфейсе, значение не отображается, а только команда 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> 

Спасибо за помощь! хД


person Gabriel    schedule 08.11.2017    source источник
comment
Установите механизм просмотра app.set('view engine', 'html');.   -  person user-developer    schedule 08.11.2017
comment
Возможный дубликат Изменить расширение .ejs на .html с помощью Parse .com Express.js   -  person Neil Lunn    schedule 08.11.2017


Ответы (1)


Вы используете файл .html для рендеринга данных, но в своем app.js вы определили его как .ejs в строке app.engine.

Итак, либо вы изменили тип файла .html на .ejs, либо вам нужно заменить строку app.engine на эту

app.set('view engine', 'html');
person Jitender Kumar    schedule 08.11.2017