Ich versuche, mehrere Ansichten in der Nodejs (expressjs) App zu setzen.TypeError: Kann die Eigenschaft 'Lookup' von undefined nicht lesen
Ich habe diesen Fehler, wenn node server
Befehl im Terminal ausführen.
TypeError: Cannot read property 'lookup' of undefined
in dieser Linie
var lookupProxy = express.view.lookup;
Was mit meinem Code falsch ist! hier ist mein server.js:
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
enableMultipleViewFolders(express);
app.set('views', [__dirname + '/admin/views', __dirname + '/client/views']);
app.engine('html', require('ejs').renderFile);
app.use(bodyParser.urlencoded({extended:true}));
app.use(bodyParser.json());
app.listen(port, function(){
console.log('Listening on port ' + port); //Listening on port 8888
});
app.get('/', function (req, res) {
res.render('index.html');
});
app.get('/partials/:name', function (req, res) {
console.log(req.params.name);
res.render('partials/' + req.params.name);
});
function enableMultipleViewFolders(express) {
// proxy function to the default view lookup
var lookupProxy = express.view.lookup;
express.view.lookup = function (view, options) {
if (options.root instanceof Array) {
// clones the options object
var opts = {};
for (var key in options) opts[key] = options[key];
// loops through the paths and tries to match the view
var matchedView = null,
roots = opts.root;
for (var i=0; i<roots.length; i++) {
opts.root = roots[i];
matchedView = lookupProxy.call(this, view, opts);
if (matchedView.exists) break;
}
return matchedView;
}
return lookupProxy.call(express.view, view, options)
};
}
Sieht wieder auf Ihren Referenzlink. Sie übergeben das falsche Objekt an die enableMultipleViewFolders-Funktion. Entsprechend dieser Antwort und in Kombination mit Ihrem Code sollten Sie 'enableMultipleViewFolders (express);' schreiben und die 'app' nicht übergeben. –
Ihr Express-Modul hat keine View-Eigenschaft. Von dem, was ich in Ihrem Verweis-Link gesehen habe, ist die Antwort für Express-Version 2. Ich nehme an, dass Sie Version 4 verwenden. Sie könnten stattdessen einen Ansichtsprototyp von app.get ('view') erhalten. –