Node.JS Express渲染HTML,變成顯示原始碼 問題及解決
阿新 • • 發佈:2019-01-23
Node.JS渲染HTML變成顯示原始碼問題及解決
問題
當使用Node.JS Express伺服器渲染HTML頁面的時候,本應該渲染出HTML頁面,結果顯示出了HTML的原始碼:
HTML EJS引擎渲染
在生成的express工程中,預設使用jade模板渲染HTML頁面,但其方式與日常的HTML相差甚遠。因此作者使用EJS作為HTML的渲染引擎,
當然,先安裝ejs:
npm install ejs
在app.js中宣告渲染方式:
var express = require('express');
var path = require('path');
var ejs = require('ejs');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, '/src/views'));
app.engine('html', require('ejs').__express);
app.set('view engine', 'html');
// app.set('view engine', 'jade');
詳細瞭解以上EJS模板呼叫的原理,可以簡單看一下以下連結
Express使用html模板
解決渲染HTML失敗問題
經過ejs模板渲染之後,但,在渲染的過程中:
var express = require('express');
var router = express.Router();
/* GET page. */
router.get('/*', function(req, res, next) {
res.render('index');
});
module.exports = router;
就出現了HTML渲染失敗的問題。
解決方法為:新增伺服器返回渲染的type值res.type('html');
var express = require('express');
var router = express.Router();
/* GET page. */
router.get('/*', function(req, res, next) {
res.type('html');
res.render('index');
});
module.exports = router;
連線中樓主說無效,可能再進一步的步驟如下:
還有很多人說,新增以後還是不能正確渲染,那麼主要是因為瀏覽器快取的問題,接下來清除瀏覽器快取:
在Chrome中
ctrl+shift+delete
清除所有瀏覽器快取,再次重新整理頁面,即可:
DONE!