2015-08-09 3 views
1

В настоящее время я создаю приложение nodejs, и у меня возникают проблемы с его настройкой. Я использую создателя проекта Webstorm и выбираю приложение nodejs express с рулями в качестве движка. Я также включаю express-handlebars. По какой-то причине, когда я включаю частичный, он не находит его, хотя я указываю, что такое частичная папка. Ниже моя установка:Почему моя часть не найдена?

App.js

var express = require('express'); 
var path = require('path'); 
var favicon = require('serve-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 


// view engine setup 
var handlebars = require('express-handlebars').create({ 
    layoutsDir: path.join(__dirname, "views/layouts"), 
    partialsDir: path.join(__dirname, "views/partials"), 
    defaultLayout: 'layout', 
    extname: 'hbs' 
}); 


//routes 
var index = require('./routes/index'); 
var users = require('./routes/users'); 
var products = require('./routes/products') 

var app = express(); 



app.engine('handlebars', handlebars.engine); 
app.set('view engine', 'hbs'); 
app.set('views', path.join(__dirname, "views")); 

app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(cookieParser()); 
app.use(express.static(path.join(__dirname, 'public'))); 



app.use('/', index); 
app.use('/products', products); 
app.use('/users', users); 

// catch 404 and forward to error handler 
app.use(function(req, res, next) { 
    var err = new Error('Not Found'); 
    err.status = 404; 
    next(err); 
}); 

// error handlers 

// development error handler 
// will print stacktrace 
if (app.get('env') === 'development') { 
    app.use(function(err, req, res, next) { 
    res.status(err.status || 500); 
    res.render('error', { 
     message: err.message, 
     error: err 
    }); 
    }); 
} 

// production error handler 
// no stacktraces leaked to user 
app.use(function(err, req, res, next) { 
    res.status(err.status || 500); 
    res.render('error', { 
    message: err.message, 
    error: {} 
    }); 
}); 


module.exports = app; 

Это просмотреть моя структура папок и мой маршрут файл products.js, а также мои рули. Когда я перехожу к странице продуктов, я получаю сообщение об ошибке «partial productsinfo not found». Я пробовал все и idk, как исправить, был бы признателен, если бы кто-то мог пролить свет на то, что я делаю неправильно здесь. Просто хочу исправить эту настройку, чтобы я мог, наконец, начать свой побочный проект. Благодаря!

изменить: игнорировать расширение .handlebars для частичного productinfo.handlebars, я изменил расширение, чтобы попытаться заставить его работать, но ничего не сделал. Теперь он вернулся к productinfo.hbs и до сих пор не работает.

+0

Вы сказали, что ошибка 'partial productsinfo not found', но имя файла не является множественным, а просто' productinfo'. Это опечатка? Сделайте ваши другие шаблоны рентабельными? Также вы можете показать, где вы показываете 'productinfo.hbs'? – mscdex

+0

@mscdex yea Я боюсь, что это была опечатка, вы можете увидеть, где я показываю частичный productinfo.hbs на прилагаемом скриншоте. Чтобы ответить на ваши другие вопросы, взгляды рендеринга просто прекрасны, а лишь частичное, которое по какой-то причине не найдено. – dalvacoder

ответ

0

Довольно уверен, что я понял причину, поэтому, по-видимому, когда вы строите проект с помощью webstorm, он включает в себя структуру hbs, которая похожа на структуру «express-handlebars». Поэтому, когда я включил «express-handlebars», они были противоречивыми, и по какой-то причине мое приложение использовало hbs. Idk, как исправить, а не просто строить проект с нуля и, в частности, включать то, что мне нужно, а не использовать построитель проектов Webstorm. Я удалил модуль hbs, но теперь я получаю сообщение об ошибке: hbs не найден, просто не видно, как он пытается его искать.

Редактировать: Хорошо, просто исправил его, пришлось просто переименовать расширения теперь, когда я избавился от другого модуля hbs. Теперь отлично. Мораль истории: убедитесь, что вы обращаете внимание на все модули, добавляемые webstorm, или просто добавьте все вручную самостоятельно.

0

Ваше productinfo.handlebars имя файла должно быть вместо этого productinfo.hbs.

+0

О, извините, я забыл переименовать его обратно в .hbs, я только переименовал его в .handlebars, чтобы попробовать его в случае расширения. Он по-прежнему не находит частичное даже с расширением .hbs, вот как это было изначально. – dalvacoder

1

Вы не присваиваете ничего этой переменной {{productinfo}} в шаблоне. С маршрутом проблем нет. Либо удалите эту переменную из шаблона, либо назначьте некоторое значение.

Смежные вопросы