पीपोड नोडजेस वीडियो के माध्यम से जाकर और वर्तमान एक्सप्रेस/नोड संस्करणों पर ऐप को दोबारा बनाने के लिए मैंने एक छोटी सी समस्या में भाग लिया है।आप एक एक्सप्रेस ऐप में जेड आधारित विकल्प कैसे सेट करते हैं? ("पूर्ण" पथ का उपयोग "पूर्ण" पथों के साथ "विस्तार" करने के लिए आवश्यक है)
फ़ाइल संरचना
site
- apps
- - authentication
- - - views
- - - - login.jade
- - - routes.js
- node_modules
- public
- - images
- - javascripts
- - stylesheets
- routes
- views
app.js
login.jade:
extends /views/layout
block content
form(action='/sessions', method='post')
label
| Username
input(type='text', name='user')
label
| Password
input(type='password', name='password')
input(type='submit', name='submit')
app.js
var express = require('express')
, user = require('./routes/user')
, http = require('http')
, path = require('path');
var app = express();
// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.set('view options', { basedir: process.env.__dirname})
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
require('./apps/authentication/routes')(app)
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
जब मैं localhost:3000/login
मैं निम्न त्रुटि प्राप्त करने के लिए नेविगेट:
Error: /Users/bob/code/site/apps/authentication/views/login.jade:1
> 1| extends /views/layout
2| block content
3| form(action='/sessions', method='post')
4| label
the "basedir" option is required to use "extends" with "absolute" paths
मैं विस्तारित लाइन को अपडेट कर सकता हूं: विस्तारित करता है ../../../views/layout और इसे काम करता है, लेकिन मैं यह जानना चाहूंगा कि आधारर विकल्प कैसे सेट करें।
इसे जोड़ने और पुनरारंभ करने के बाद एक ही त्रुटि प्राप्त करें। – sclarson
अजीब, जिसने मेरे लिए समस्या हल की ([email protected], [email protected])। इसे एक और तरीका यह करना चाहिए कि 'रेंडर' के साथ पैरामीटर के रूप में 'आधारित' को पास करना है: 'res.render ('templatename', {basedir: '/ your/base/directory', ...})'। मेरे लिए भी काम करता है ([न्यूनतम डेमो का सारांश] (https://gist.github.com/robertklep/5570115))। – robertklep
कभी भी ठीक काम नहीं करता है। मैं एक गूढ़ धारणा बना रहा था कि process.env .__ dirname किसी कारण से ऐप में वर्तमान रूट निर्देशिका थी। अब मैं app.locals.basedir = process.env.PWD का उपयोग कर रहा हूं और यह बहुत अच्छा काम करता है। धन्यवाद! – sclarson