1. 程式人生 > >Node.JS Express渲染HTML,變成顯示原始碼 問題及解決

Node.JS Express渲染HTML,變成顯示原始碼 問題及解決

Node.JS渲染HTML變成顯示原始碼問題及解決

問題

當使用Node.JS Express伺服器渲染HTML頁面的時候,本應該渲染出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

清除所有瀏覽器快取,再次重新整理頁面,即可:
HTML渲染成功

DONE!