车把不会呈现 HTML

问题描述 投票:0回答:1

我是使用把手的新手,并努力找出为什么我想要的 html 根本无法渲染。车把似乎只会扔给我空白页。

我怀疑这与 {{{body}}} 标签没有被车把包作为术语有关。

这是我的代码的样子:

const express = require('express')
const engine = require('express')
const exphbs = require('express-handlebars')

//Load config
dotenv.config({ path: './config/config.env'})

const app = express()

if (process.env.NODE_ENV === 'development') {
  app.use(morgan('dev'))
}

//Handlebars
app.engine('.hbs', engine({ defaultLayout: 'main', extname: '.hbs'}))
app.set('view engine', '.hbs')
app.set('views', './views');

// Routes
app.use('/', require('./routes/index'))


const PORT = process.env.PORT || 3000

app.listen(
  PORT, 
  console.log(`Server running in ${process.env.NODE_ENV} made on port ${PORT}`)
)

Index.js:

const express = require('express')
const router = express.Router()

// @Desc Login/Landing page
// @route GET /
router.get('/login', (req, res) => {
  res.render('login', {layout: 'main'})
})

//@Desc Dashboard
// @route GET /dashboard
router.get('/dashboard', (req, res) => {
  res.render('dashboard', {layout: 'main'})
})

module.exports = router

main.hbs

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <meta name = "viewport" content="width=device-width, initial-scale=1.0"
    <title>FW Pre-Call-Script Generator</title>
  </head>
  <body>
     {{{body}}}
  </body>
</html>

和仪表板.hbs

---
layout: 'main'
---
<h1>Dashboard</h1>

超级简单。我只是希望它在 localhost:3000/dashboard 处以 h1 字体呈现“仪表板”,但它在该地址上根本不返回任何内容。这并不是说该地址无效 - 只是没有 HTML 能够通过。

我尝试了所有基本的故障排除方法。这是我的文件夹和文件的列表。 photo of folders and files

知道发生什么事了吗?

javascript html handlebars.js react-fullstack
1个回答
0
投票

您没有使用

exphbs
导入。您实际上导入了
express
两次,第二次将其分配给变量
engine
。但你想要的
engine
是由
express-handlebars
导出的。因此,您应该删除第二个
express
导入并解构
epxress-handlebars
导入,以便获得对正确
engine
的引用:

const express = require('express')
const { engine } = require('express-handlebars')
© www.soinside.com 2019 - 2024. All rights reserved.