Настройка имени расширения файла в экспресс-руле - PullRequest
0 голосов
/ 26 января 2019

У меня есть конфигурация руля

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;
}

, но я получаю эту ошибку:

Ошибка: ENOENT: нет такого файла или каталога, откройте C: \ Users \ DiesanRomero \ Desktop \ redsocial \ views \ layouts \ main.handlebars '

А это мои каталоги, что не так?enter image description here

1 Ответ

0 голосов
/ 26 января 2019

Поскольку ваши файлы руля используют .hbs в качестве имени расширения, вам необходимо правильно определить extName при создании экземпляра руля, например:

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')
}))

Или просто измените расширение файлов на руле на filename.handlebars.

...