So ändern Sie die LENKER-Verlängerung für express?

Ich bin neu node.js und ich möchte die LENKER template-engine, aber mit einem kürzen Erweiterung hbs.

Hier ist der original code (Quelle):

var handlebars = require('express3-handlebars')
.create({ defaultLayout: 'main' });
app.engine('handlebars', handlebars.engine);
app.set('view engine', 'handlebars');

Es funktionierte mit Vorlagen mit handlebars Erweiterung, aber ich habe ihn an:

var handlebars = require('express3-handlebars')
.create({ defaultLayout: 'main' });
app.engine('hbs', handlebars.engine);
app.set('view engine', 'hbs');

Und ändern Sie die template-Erweiterungen zu hbs.
Aber jetzt bekomme ich diesen Fehler:

Error: ENOENT: no such file or directory, open '/path/to/node/myproject/views/layouts/main.handlebars'
   at Error (native)

Ich habe auch versucht

var handlebars = require('express3-handlebars')
.create({ defaultLayout: 'main' , extname : '.hbs'});
app.engine('handlebars', handlebars.engine);
app.set('view engine', 'handlebars');

als pro Antwort hier,

aber ich Ergebnisse, in:

Error: Failed to lookup view "500" in views directory "/path/to/myproject/views"
   at EventEmitter.render (/path/to/myproject/node_modules/express/lib/application.js:579:17)
   at ServerResponse.render (/path/to/myproject/node_modules/express/lib/response.js:961:7)
   at /path/to/myproject/app.js:96:6
   at Layer.handle_error (/path/to/myproject/node_modules/express/lib/router/layer.js:71:5)
   at trim_prefix (/path/to/myproject/node_modules/express/lib/router/index.js:310:13)
   at /path/to/myproject/node_modules/express/lib/router/index.js:280:7
   at Function.process_params (/path/to/myproject/node_modules/express/lib/router/index.js:330:12)
   at next (/path/to/myproject/node_modules/express/lib/router/index.js:271:10)
   at Layer.handle_error (/path/to/myproject/node_modules/express/lib/router/layer.js:67:12)
   at trim_prefix (/path/to/myproject/node_modules/express/lib/router/index.js:310:13)

Ich habe versucht, andere Dinge zu, aber keiner war so gefragt, wie kann ich dieses Problem beheben?

InformationsquelleAutor supermario | 2016-01-03



2 Replies
  1. 10

    Diese hat den trick:

    exphbs = require('express3-handlebars'),
    app.engine('hbs', exphbs({defaultLayout: 'main', extname: '.hbs'}));
    app.set('view engine', 'hbs');
  2. 2

    Können Sie express-hbs statt express3-handlebars.

    Einfach, Sie tun können:

    var hbs = require('express-hbs');
    /*
    ...
    */
    app.engine('hbs', hbs.express4({
      partialsDir   : __dirname +'/views/partials',
      defaultLayout : __dirname +'/views/layouts/default',
      extname       : '.hbs',
      layoutsDir    : __dirname +'/views/layouts',
    }));
    
    app.set('view engine', 'hbs');
    app.set('views', __dirname + '/views');
    • So ist es nicht möglich mit express3-handlebars?
    • Es wohl ist. Aber express3-handlebars wurde umbenannt, um express-handlebars und Sie sind wahrscheinlich, mit Express-4, die ist die aktuelle version. Also, es ist unwahrscheinlich, dass die arbeiten mit dem alten Modul. Wenn Sie es ändern, um express-handlebars es wird in Ordnung sein. Ich würde eher verwenden express-hbs wegen der Konsistenz und dem out of the box-Funktionen wie i18n oder Verschönerung.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.