簡體   English   中英

Express.js 渲染未命名索引的 html 文件時出錯

[英]Express.js Error in rendering html files that are not named index

當我使用 index.html 時它不會給出任何類型的錯誤,但是每當我使用任何其他名稱時,它都會引發錯誤。 這是我的代碼:-

const express = require('express'); 
const app = express(); 

app.use(express.static('Images'));  //It tells node that Images folder is the root folder

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

app.get("/",(req,res)=>{
   res.render("home");
});

app.listen(3000,()=>{
    console.log("Server listening to PORT:3000");
});    

這是錯誤

Error: No default engine was specified and no extension was provided.
    at new View (E:\NewExp\node_modules\express\lib\view.js:61:11)
    at Function.render (E:\NewExp\node_modules\express\lib\application.js:570:12)
    at ServerResponse.render (E:\NewExp\node_modules\express\lib\response.js:1012:7)
    at E:\NewExp\App.js:9:8
    at Layer.handle [as handle_request] (E:\NewExp\node_modules\express\lib\router\layer.js:95:5)
    at next (E:\NewExp\node_modules\express\lib\router\route.js:137:13)
    at Route.dispatch (E:\NewExp\node_modules\express\lib\router\route.js:112:3)
    at Layer.handle [as handle_request] (E:\NewExp\node_modules\express\lib\router\layer.js:95:5)
    at E:\NewExp\node_modules\express\lib\router\index.js:281:22
    at Function.process_params (E:\NewExp\node_modules\express\lib\router\index.js:335:12)

為什么每當我使用除索引以外的任何其他名稱時都會出現此錯誤?

從您的代碼中,我假設您想使用html文件(或擴展名)作為 express 的默認引擎。

來自快遞文檔:

使用 app.engine(ext, callback) 方法創建您自己的模板引擎。 ext 指的是文件擴展名,callback 是模板引擎 function,它接受以下項目作為參數:文件的位置,選項 object,以及回調 ZC1C425268E68385D1AB5074C17A94。

用例:

var fs = require('fs')

app.engine('html', function (filePath, options, callback) {
  fs.readFile(filePath, function (err, content) {
    if (err) return callback(err)
    // simple template engine
    var rendered = content.toString()
     .replace('#title#', '<title>' + options.title + '</title>')
     .replace('#message#', '<h1>' + options.message + '</h1>')
    return callback(null, rendered)
 })
})

app.set('views', './views')    // specify the views directory
app.set('view engine', 'html') // register the template engine

並像這樣渲染:

app.get('/', function (req, res) {
  res.render('index', { title: 'Hey', message: 'Hello there!' })
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM