【发布时间】:2015-05-12 13:48:54
【问题描述】:
我拿起一本关于使用 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)
我在指定路径中有一个索引文件。这是我的文件结构:
>-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 的文件中是否做错了什么。
【问题讨论】:
标签: javascript node.js express