node.js - Mean Stack 应用程序中的部分页面渲染问题

标签 node.js angularjs express webstorm mean-stack

我正在通过 Pluralsight 教程来学习 Mean Stack。在渲染局部部分两天的过程中,我在某个时刻感到震惊。

您可以引用下图来获取我的文件夹结构。

Refer image for

服务器.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/

相关文章:

res.end 上的 Node.js 和 Sendgrid 邮件程序错误

node.js - TypeScript 在 Express 中添加自定义请求 header

node.js - 如何在node.js中执行与我的机器不同的机器的exe

javascript - 将 Node 路由与 Backbone 路由绑定(bind)

javascript - css 属性不适用于 Protractor ?

javascript - 应用angularjs过滤器后复选框取消选中自身

node.js - 错误 : (gcloud. 函数.deploy)操作错误 : code=3, 消息 = 构建失败

javascript - 如何向在javascript中动态添加的按钮数组添加点击功能?

javascript - 如何在 ag-grid cellEditor 组件内渲染 Angular Directive(指令)?

node.js - Passport JS + Rest API +SPA