在过去一小时左右的时间里,我一直试图找出启动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上查看了有关此主题的其他问题,但找不到合适的解决方案。如果有人能指出我正确的方向,或者甚至更好地解释为什么会发生这种情况,我将非常感激。
答案 0 :(得分:8)
来自合并文档:
注意:您仍然必须安装要使用的引擎,将它们添加到package.json依赖项中。
运行以下内容并重试。
npm install --save handlebars
答案 1 :(得分:0)
如果在导入模块时使用了错误的情况,有时会发生此错误。
例如:
import Handlebars from 'Handlebars'
将适用于MacOS,因为它具有不区分大小写的文件系统。
但是在Linux机器上(带有区分大小写的文件系统),您需要匹配Handlebars模块中的确切定义,如下所示:
import handlebars from 'handlebars'.
(以上内容适用于新的ES6模块和较旧的require()格式。)