我有一个 Handlebars 配置
const path = require('path')
const exphbs = require('express-handlebars')
const morgan = require('morgan');
const multer = require('multer');
const express = require('express');
const erroHandler = require('errorhandler')
const routes = require('../routes/index');
module.exports = app => {
app.set('port', process.env.PORT || 80)
app.set('views', path.join(__dirname, '../views'));
app.engine('.hbs', exphbs({
defaultLayout: 'main',
partialsDir: path.join(app.get('views'), 'partials' ),
layoutDir: path.join(app.get('views'), 'layouts'),
helpers: require('../helpers')
}))
app.set('view engine', '.hbs');
// middlewares
app.use(morgan('dev'));
app.use(multer({dest: path.join(__dirname, '../public/upload/temp')}).single('image'))
app.use(express.urlencoded({extended: false}));
app.use(express.json());
//routes
routes(app)
// static files
app.use('/public', express.static(path.join(__dirname, '../public')));
// errorhandlers
if ('development' === app.get('env')) {
app.use(erroHandler)
}
return app;
}
但是我得到这个错误:
Error: ENOENT: no such file or directory, open 'C:\Users\Diesan Romero\Desktop\redsocial\views\layouts\main.handlebars'
最佳答案
由于您的 Handlebars 文件使用 .hbs
作为扩展名,您需要定义 extName
正确实例化 Handlebars 时,像这样:
exphbs.create({
extname: '.hbs',
// rest of options
})
或者调整你的代码:
app.engine('.hbs', exphbs({
extName: '.hbs',
defaultLayout: 'main',
partialsDir: path.join(app.get('views'), 'partials' ),
layoutDir: path.join(app.get('views'), 'layouts'),
helpers: require('../helpers')
}))
或者将您的 handlebars 文件扩展名更改为 filename.handlebars
。
关于javascript - 在 express handlebars 中配置文件扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54379902/