为什么我的部分不被发现?

我目前正在做一个nodejs应用程序,我有一些麻烦设置它。 我正在使用Webstorm的项目创build者和selectnodejs表示应用与把手作为引擎。 我还包括快速车把。 出于某种原因,当我包含一个部分时,即使指定了部分文件夹,也不会find它。 以下是我的设置:

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路线文件以及我的把手视图。 当我导航到产品页面时,出现“部分产品信息未find”的错误。 我已经尝试了一切,如何修复,如果有人能够澄清我在这里做错了什么,将不胜感激。 只是想修复这个设置,所以我可以终于开始我的scheme。 谢谢!

编辑:忽略productinfo.handlebars局部的.handlebars扩展名,我改变了扩展名,试图让它起作用,但是什么都没做。 现在它返回到productinfo.hbs,仍然无法正常工作。

您不会在模板中为此variables{{productinfo}}分配任何内容。 这条路线没有问题。 从模板中删除此variables或分配一些值。

您的productinfo.handlebars文件名应该是productinfo.hbs

很确定,我明白了原因,显然当你使用webstorm构build项目时,它包含了类似于“express-handlebars”框架的hbs框架。 所以当我把“express-handlebars”包含进来的时候,它们是相互冲突的,我的应用程序由于某种原因而使用了hbs。 Idk如何解决,而不仅仅是从头开始构build项目,特别是包括我所需要的,而不是使用webstorm的项目构build器。 我删除了HBbs模块,但我现在得到一个错误,说hbs没有find,只是似乎无法看到它在试图寻找它。

编辑:好的只是修复它,不得不简单地重命名扩展名,现在我摆脱了其他HBbs模块。 现在完美工作。 道德的故事:确保你注意所有的模块被webstorm添加或只是手动添加所有的东西自己大声笑。