javascript - 在 express handlebars 中配置文件扩展名

标签 javascript express express-handlebars

我有一个 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'

这是我的目录,怎么了? enter image description here

最佳答案

由于您的 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/

相关文章:

javascript - AngularJS 使用 Express Server 进行路由

handlebars.js - 使用 Nodemailer 和 Handlebars 发送电子邮件

javascript - 类型错误 : exphbs is not a function

javascript - 期待 'ID' , 'STRING' , 'NUMBER' , 'BOOLEAN' , 'UNDEFINED' , 'NULL' , 'DATA' ,得到 'INVALID'

javascript - 检查数组的总和是否大于最大数,反之亦然 JavaScript

javascript - 从对象函数内部获取函数

javascript - Ember-data:如果不存在则创建一条记录?

javascript - 我收到 404 未找到 api

node.js - 我应该为 RESTful Nodejs 应用程序使用 Express 还是 Connect

node.js - REST API 社交登录 [express.js]