我正在通过 Pluralsight 教程来学习 Mean Stack。在渲染局部部分两天的过程中,我在某个时刻感到震惊。
您可以引用下图来获取我的文件夹结构。
服务器.js
/**
* Created by nyaconcepts on 4/10/2014.
*/
var express=require('express');
var env=process.env.NODE_ENV=process.env.NODE_ENV||'development';
var app=express();
var config=require('./server/config/config')[env];
require('./server/config/express')(app,config);
require('./server/config/mongoose')(config);
require('./server/config/routes')(app);
app.listen(config.port);
console.log('Listening on port'+config.port+'---');
express.js
var express=require('express'),
bodyParser = require('body-parser'),
morgan = require('morgan'),
stylus=require('stylus');
module.exports=function(app,config) {
function compile(str,path){
return stylus(str).set('filename',path);
}
app.set('views',config.rootPath+'server/views');
app.set('view engine','jade');
app.use(morgan('dev'));
app.use(bodyParser());
app.use(stylus.middleware({
src:config.rootPath+'/public',
compile:compile
}
));
app.use(express.static(config.rootPath+'/public'));
}
routes.js
module.exports=function(app){
app.get('/partials/*',function(req,res){
console.log("req ="+req +"and res="+res);
res.render('../../public/app/'+ req.params);
});
app.get('*',function(req,res){
res.render('index');
});
}
app.js
angular.module('app',['ngResource','ngRoute']);
angular.module('app').config(function($routeProvider,$locationProvider){
$locationProvider.html5Mode(true);
$routeProvider
.when('/',{ templateUrl:'/partials/main/main/',controllers:'mvMainCtrl'});
});
config.js
var path=require('path');
var rootPath=path.normalize(__dirname + '/../../' );
module.exports={
development:{
db:'mongodb://localhost/multivision',
rootPath:rootPath,
port:process.env.PORT || 3030
},
production:{
db:'****',
rootPath:rootPath,
port:process.env.PORT || 80
}
}
main.jade
//h1 This is a partial
//h2{{myVar}
.container
.jumbotron
h1 MultiVision
p My first mean stack application
.row
.col-md-6
div(ng-include="'/partials/main/featured-courses'")
.col-md-6
div(ng-include="'/partials/main/new-courses'")
我收到的错误是
Error: Failed to lookup view "../../public/app/[object Object]" in views directory "C:\Users\nyaconcepts\WebstormProjects\MultiVision\server/views"
at Function.app.render (C:\Users\nyaconcepts\WebstormProjects\MultiVision\node_modules\express\lib\application.js:491:17)
at ServerResponse.res.render (C:\Users\nyaconcepts\WebstormProjects\MultiVision\node_modules\express\lib\response.js:777:7)
at Object.handle (C:\Users\nyaconcepts\WebstormProjects\MultiVision\server\config\routes.js:5:13)
at next_layer (C:\Users\nyaconcepts\WebstormProjects\MultiVision\node_modules\express\lib\router\route.js:103:13)
at Route.dispatch (C:\Users\nyaconcepts\WebstormProjects\MultiVision\node_modules\express\lib\router\route.js:107:5)
at c (C:\Users\nyaconcepts\WebstormProjects\MultiVision\node_modules\express\lib\router\index.js:195:24)
at Function.proto.process_params (C:\Users\nyaconcepts\WebstormProjects\MultiVision\node_modules\express\lib\router\index.js:251:12)
at next (C:\Users\nyaconcepts\WebstormProjects\MultiVision\node_modules\express\lib\router\index.js:189:19)
at SendStream.error (C:\Users\nyaconcepts\WebstormProjects\MultiVision\node_modules\express\node_modules\serve-static\index.js:74:37)
at SendStream.EventEmitter.emit (events.js:95:17)
最佳答案
我遇到了同样的问题,这为我解决了问题
// Serve jade tempates from partials
app.get('/partials/*', function(req, res){
console.log(req.params);
res.render('../../public/app/' + req.params[0]);
});
感谢@Roman 提供的提示,让我了解正在发生的事情:)
关于node.js - Mean Stack 应用程序中的部分页面渲染问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23224024/