500错误:无法在视图目录中查找视图“索引”

我拿起一本关于使用MongoDB和Node.js进行Web开发的书。 我已经到了一个地步,我的代码不工作,我觉得我有一切正确的判断,这本书有什么。 现在我得到这个错误:

Connect 500 Error: Failed to lookup view "index" in views directory "C:\imageUploadProject/views" at EventEmitter.app.render (C:\imageUploadProject\node_modules\express\lib\application.js:555:17) at ServerResponse.res.render (C:\imageUploadProject\node_modules\express\lib\response.js:938:7) at module.exports.index (C:\imageUploadProject\controllers\home.js:5:7) at Layer.handle [as handle_request] (C:\imageUploadProject\node_modules\express\lib\router\layer.js:82:5) at next (C:\imageUploadProject\node_modules\express\lib\router\route.js:110:13) at Route.dispatch (C:\imageUploadProject\node_modules\express\lib\router\route.js:91:3) at Layer.handle [as handle_request] (C:\imageUploadProject\node_modules\express\lib\router\layer.js:82:5) at C:\imageUploadProject\node_modules\express\lib\router\index.js:267:22 at Function.proto.process_params (C:\imageUploadProject\node_modules\express\lib\router\index.js:321:12) at next >(C:\imageUploadProject\node_modules\express\lib\router\index.js:261:10) 

我有一个索引文件在指定的path。 这是我的文件的结构:

 >-controllers >>>+home.js >>>+image.js >-helpers >-node_modules >>>Needed modules and such. Won't bore you with all the ones installed. Let me know if there is something in here you would like to see. >-public >-server >>>+configure.js >>>+routes.js >-views >>>-layouts >>>>>>+main.handlebars >>>-partials >>>>>>+comments.handlebars >>>>>>+popular.handlebars >>>>>>+stats.handlebars >>>+image.handlebars >>>+index.handlebars >package.json >server.js 

而代码到我觉得可能是错误的文件。

server.js

 // JavaScript Document var express = require('express'), config = require('./server/configure'), app = express(); app.set('port', process.env.PORT || 3300); app.set('views', __dirname + '/views'); app = config(app); var server = app.listen(app.get('port'), function() { console.log('Server up: http://localhost:' + app.get('port')); }); configure.js // JavaScript Document var path = require('path'), routes = require('./routes'), exphbs = require('express3-handlebars'), express = require('express'), bodyParser = require('body-parser'), cookieParser = require('cookie-parser'), morgan = require('morgan'), methodOverride = require('method-override'), errorHandler = require('errorhandler'); moment = require('moment'); module.exports = function(app) { app.engine('handlebars', exphbs.create({ defaultLayout: 'main', layoutsDir: app.get('views') + '/layouts', partialsDir: [app.get('views') + '/partials'], helpers: { timeago: function(timestamp) { return moment(timestamp).startOf('minute').fromNow(); } } }).engine); app.set('view engine', 'handlebars'); app.use(morgan('dev')); app.use(bodyParser({ uploadDir:path.join(__dirname, '.../public/upload/temp') })); app.use(methodOverride()); app.use(cookieParser('some-secret-value-here')); routes.initialize(app, new express.Router()); app.use('/public/', express.static(path.join(__dirname, '.../public'))); if('development' === app.get('env')) { app.use(errorHandler()); } return app; }; 

routes.js

 // JavaScript Document var home = require('../controllers/home'), image = require('../controllers/image'); module.exports.initialize = function(app, router) { router.get('/', home.index); router.get('/images/:image_id', image.index); router.post('/images', image.create); router.post('/images/:image_id/like', image.like); router.post('/images/:image_id/comment', image.comment); app.use('/', router); } 

home.js

 // JavaScript Document module.exports = { index: function(req, res) { res.render('index'); } }; 

image.js

 // JavaScript Document module.exports = { index: function(req, res) { res.render('image'); }, create: function(req, res) { res.send('The image:create POST controller'); }, like: function(req, res) { res.send('The image:like POST controller'); }, comment: function(req, res) { res.send('The image:comment POST controller'); } }; 

让我知道是否有任何其他文件,你想看到。 我几次回顾这本书后,不确定如何从这里出发。 我唯一能想到的是Express 3.5.X和Express 4.0之间有一些断开。 本书介绍了如何将server.js,configure.js和route.js转换为Express 4.0。 但是,我想知道是否有什么我在其他文件中可能不符合4.0的错误。

尝试在你的server.js文件中做这个

 app.set('views', path.join(__dirname, 'views')); 

那真是令人尴尬。 我正在input“index.handlebars”来保存我的文件。 但是,他们并没有将它们保存为HANDLEBARS文件,它们被保存为html文档仍然是如此。 我改变了所有的文件到适当的文件types,所有的工作现在…不知道为什么他们没有得到妥善保存在一开始,可以发誓我已经正确设置XD谢谢大家的看法。