找不到模块' hbs',express-handlebars

时间:2018-01-11 16:13:40

标签: node.js express handlebars.js

我正在尝试使用express-handlebars视图引擎进行表达,并且我不断收到以下错误:

Error: Cannot find module 'hbs'
    at Function.Module._resolveFilename (module.js:538:15)
    at Function.Module._load (module.js:468:25)
    at Module.require (module.js:587:17)
    at require (internal/module.js:11:18)
    at new View (C:\Users\WilPrim\Desktop\node-app\node_modules\express\lib\view.js:81:14)
    at Function.render (C:\Users\WilPrim\Desktop\node-app\node_modules\express\lib\application.js:570:12)
    at ServerResponse.render (C:\Users\WilPrim\Desktop\node-app\node_modules\express\lib\response.js:1008:7)
    at C:\Users\WilPrim\Desktop\node-app\routes\routes.js:5:6
    at Layer.handle [as handle_request] (C:\Users\WilPrim\Desktop\node-app\node_modules\express\lib\router\layer.js:95:5)
    at next (C:\Users\WilPrim\Desktop\node-app\node_modules\express\lib\router\route.js:137:13)

这是我的代码:

const express = require("express");
const bodyParser = require("body-parser");
const hbs = require("express-handlebars");
const router = require("./routes/routes");

//set up express app
var app = express();

app.use(bodyParser.json());

app.set('view engine', 'hbs');
app.set('views', './views');
app.set('view options', {layout: './layouts/layout'});

app.use(router);

4 个答案:

答案 0 :(得分:10)

根据express-handlebars documentation,您必须手动设置和注册视图引擎:

var express = require('express');
var exphbs  = require('express-handlebars');

var app = express();
var hbs = exphbs.create({ /* config */ });

// Register `hbs.engine` with the Express app.
app.engine('handlebars', hbs.engine);
app.set('view engine', 'handlebars');

// ...still have a reference to `hbs`, on which methods like `loadPartials()`
// can be called.

在文档中进一步了解,看起来您仍然可以使用.hbs扩展名进行一些配置:

var express = require('express');
var exphbs  = require('express-handlebars');

var app = express();

app.engine('.hbs', exphbs({extname: '.hbs'}));
app.set('view engine', '.hbs');

答案 1 :(得分:1)

您可能已将主文件夹命名为“ express” 只需更改文件夹的名称,删除“ package.json”并尝试 再次“ npm install” “ npm install express” “ npm install hbs”

答案 2 :(得分:0)

使用命令-sudo npm link hbs

答案 3 :(得分:-1)

在终端上安装此模块-> npm i hbs