2016-09-12 2 views
1

Ich habe eine Node.js App. Ich habe diese App für eine Weile gebaut und derzeit Swig als View-Engine verwendet. Ich setze es als View-Engine unter Verwendung des folgenden Codes:Node.js - Migrieren von Swig zu Nunjucks in Express

// Use swig.  
const swig = require('swig'); 
app.engine('html', swig.renderFile); 
if (app.get('env') === 'development') { 
    swig.setDefaults({ cache: false }); 
} 

app.set('views', path.join(__dirname, '../views')); 
app.set('view engine', 'html'); 

Dies hat gut funktioniert. Allerdings habe ich einige Ausfallzeiten, also dachte ich mir, dass jetzt ein guter Zeitpunkt wäre, um zu Nunjucks zu migrieren. Also, ich ersetzte die oben genannten mit:

// Use nunjucks.  
const nunjucks = require('nunjucks'); 
app.engine('html', nunjucks.renderFile); 
if (app.get('env') === 'development') { 
    nunjucks.setDefaults({ cache: false }); 
} 
app.set('views', path.join(__dirname, '../views')); 
app.set('view engine', 'html');  

Wenn ich meine Website starte, erhalte ich jetzt einen Fehler. Der Fehler lautet:

throw new Error('callback function required'); 
    ^

Error: callback function required 
    at EventEmitter.engine (C:\MyProject\node_modules\express\lib\application.js:294:11) 
    at EventEmitter.module.exports (C:\MyProject\src\index.js:16:9) 
    at EventEmitter.configure 
... 

Was mache ich falsch? Welcher Callback wird gesucht? Ich weiß, dass ich einige syntaktische Fehler haben werde, sobald ich die Nunjucks-Engine benutze. Ich versuche jedoch herauszufinden, wie man den Nunjucks-Motor laden kann.

Antwort

1

Templating-Motoren haben normalerweise ihre eigene Konfigurationsmethode. Für Nunjucks, sollten Sie diese verwenden:

const nunjucks = require('nunjucks'); 

nunjucks.configure('views', { 
    express : app, 
    noCache : app.get('env') === 'development', 
    ... 
}); 

Dokumentation here.