EJS不会渲染res.render返回的值

时间:2017-11-08 03:18:15

标签: node.js express ejs

我正在重新定向页面,但是当我要在前端列出这个结果时,我的前端视图中的值只显示了EJS的命令。enter image description here < / p>

我试图以几种不同的方式传递输出值但没有工作......

这是我的根文件。

enter image description here

我的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

1 个答案:

答案 0 :(得分:0)

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

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

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