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

在过去的一个小时左右,我一直在试图弄清楚为什么我在启动一个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堆栈。 在下面你可以find我试图运行的两个不同版本的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 + '...'); 

运行代码的版本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) 

VIEW(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上查看了关于这个主题的其他问题,但是找不到合适的解决scheme。 我真的很感激,如果有人能指出我正确的方向,甚至更好地解释为什么会发生这种情况。

从整合文档:

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

运行以下,然后重试。

 npm install --save handlebars 

如果导入模块时使用了错误的情况,有时会出现这种错误。

例如:

 import Handlebars from 'Handlebars' 

将在MacOS上工作,因为它有一个不区分大小写的文件系统。

但是在一台Linux机器上(有一个大小写敏感的文件系统),你需要匹配Handlebars模块中的精确定义,看起来像这样:

 import handlebars from 'handlebars'. 

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