【发布时间】:2018-07-26 22:01:57
【问题描述】:
我能得到的最接近的是它会让客户端下载它们。它将下载正确的 ejs 文件。
这让我发疯,因为我觉得它应该有效,但它不会。如果我把 html 文件放在那里,它们就可以了。有点乱,因为我一直在尝试各种事情。
var application_root = __dirname;
var express = require('express');
var vhost = require( 'vhost' );
var https = require('https');
var http = require('http');
var fs = require('fs');
var path = require("path");
var forceSSL = require('express-force-ssl');
//do something
var app = express();
var credentials = {};
var config = require('./config.json')[process.env.NODE_ENV || 'dev'];
//Use ejs?
app.set('view engine', 'ejs');
app.engine('html', require('ejs').renderFile);
//Ensure all are going to www.
app.all(/.*/, function(req, res, next) {
var host = req.header("host");
if (host.match(/^www\..*/i)) {
next();
} else {
res.redirect(301, "http://www." + host);
}
});
//Use the virtual hosts
app.use(vhost('*.seq.agency',express.static(path.join(__dirname + '/seq.agency'), {
extensions: ['ejs'],
index: 'index.ejs'
})));
app.get('/', function (req, res) {
res.send('vhosts didn\'t catch this!')
});
var httpServer = http.createServer(app);
if(config.name == "prod"){
/*var options = {
key: fs.readFileSync('/etc/letsencrypt/live/kaleidoscope.wtf/privkey.pem'),
cert: fs.readFileSync('/etc/letsencrypt/live/kaleidoscope.wtf/fullchain.pem'),
ca: fs.readFileSync('/etc/letsencrypt/live/kaleidoscope.wtf/chain.pem')
}*/
console.log('starting on 443');
//var httpsServer = https.createServer(options, app);
//httpsServer.listen(443);
//httpServer.listen(80);
//app.use(forceSSL);
}
console.log('['+config.name+'] starting on port',config.port);
httpServer.listen(config.port);
【问题讨论】:
-
您是否尝试提供 EJS 文件的渲染输出?
-
你有没有试过这个
app.engine('ejs', require('ejs').renderFile);?我相信它会在到达虚拟主机之前将其转换为 .html 文件。 -
@PatrickRoberts 是的,我基本上只想使用多个使用
<% include('partials/header.ejs'); %>等的页面 -
@RickyM 我刚试过。如果我将文件保留为 .html 文件,它只会打印任何 ejs 标签,如果我将其设为 ejs 文件,它不会被 vhosts 捕获
-
为什么要为
ejs文件添加express.static?
标签: node.js express ejs vhosts