Express 4.0:找不到模块' html' &安培;找不到模块'把手'

时间:2014-08-07 11:48:19

标签: node.js express

在过去一小时左右的时间里,我一直试图找出启动Express 4.0应用程序时出现以下错误的原因:

Error: Cannot find module 'html'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at new View (e:\Multivision\node_modules\express\lib\view.js:43:49)
    at Function.app.render (e:\Multivision\node_modules\express\lib\application.
js:499:12)
    at ServerResponse.res.render (e:\Multivision\node_modules\express\lib\respon
se.js:955:7)
    at e:\Multivision\server.js:11:6
    at Layer.handle [as handle_request] (e:\Multivision\node_modules\express\lib
\router\layer.js:76:5)
    at next (e:\Multivision\node_modules\express\lib\router\route.js:100:13)

基本上,我只是想在我的视图中使用普通的html文件,因为我正在尝试使用MEAN堆栈。您可以在下面找到我尝试运行的app.js代码的两个不同版本:

版本1

var express = require('express'),
    app = express();

var env = process.env.NODE_ENV = process.env.NODE_ENV || 'development',
    port = 3000;

app.set('views', __dirname + '/server/views');
app.set('view engine', 'html');

app.get('*', function(req, res) {
    res.render('index');
});

app.listen(port);
console.log('Listening on port ' + port + '...');

版本2

var express = require('express'),
    app = express();

var env = process.env.NODE_ENV = process.env.NODE_ENV || 'development',
    port = 3000;

app.set('views', __dirname + '/server/views');
app.engine('html', require('consolidate').handlebars);
app.set('view engine', 'html');

app.get('*', function(req, res) {
    res.render('index');
});

app.listen(port);
console.log('Listening on port ' + port + '...');

运行代码的 VERSION 2 时,我收到以下错误:

Error: Cannot find module 'handlebars'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Function.exports.handlebars.render (e:\Multivision\node_modules\consolida
te\lib\consolidate.js:488:62)
    at e:\Multivision\node_modules\consolidate\lib\consolidate.js:146:25
    at e:\Multivision\node_modules\consolidate\lib\consolidate.js:99:5
    at fs.js:266:14
    at Object.oncomplete (fs.js:107:15)

查看(INDEX.HTML)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Test Application</title>
</head>
<body>
    <h1>Hello World!</h1>
</body>
</html>

我已经在StackOverflow上查看了有关此主题的其他问题,但找不到合适的解决方案。如果有人能指出我正确的方向,或者甚至更好地解释为什么会发生这种情况,我将非常感激。

2 个答案:

答案 0 :(得分:8)

来自合并文档:

注意:您仍然必须安装要使用的引擎,将它们添加到package.json依赖项中。

运行以下内容并重试。

npm install --save handlebars

答案 1 :(得分:0)

如果在导入模块时使用了错误的情况,有时会发生此错误。

例如:

import Handlebars from 'Handlebars'

将适用于MacOS,因为它具有不区分大小写的文件系统。

但是在Linux机器上(带有区分大小写的文件系统),您需要匹配Handlebars模块中的确切定义,如下所示:

import handlebars from 'handlebars'.

(以上内容适用于新的ES6模块和较旧的require()格式。)

相关问题