错误:找不到模块html

我没有使用Node.js很长一段时间,从来没有使用快递。 当我开始我的申请,它只是返回:

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 (C:\Users\fr\node_modules\express\lib\view.js:42:49) at Function.app.render (C:\Users\fr\node_modules\express\lib\application.js:483:12) at ServerResponse.res.render (C:\Users\fr\node_modules\express\lib\response.js:755:7) at allClients (C:\Users\fr\node_modules\apps\chat.js:13:7) at callbacks (C:\Users\fr\node_modules\express\lib\router\index.js:161:37) at param (C:\Users\fr\node_modules\express\lib\router\index.js:135:11) 

我启动test.html时发生错误。 代码如下:

 var io = require('socket.io'); var express = require('express'); var app = express(), http = require('http'), server = http.createServer(app), socket = require('socket.io').listen(server); app.configure(function(){ app.use(express.static(__dirname)); }); app.get('/', function(req, res, next){ res.render('./test.html'); }); server.listen(8333); 

我自己的路 :

 node_modules/ express/ socket.io/ apps/ chat.js test.html 

为什么?

编辑:

这是我的新app.configure:

 app.configure(function(){ app.use(express.static(path.join(__dirname, 'public'))); }); 

但它返回:

  path is not defined 

我假设test.html是一个静态文件。要渲染静态文件使用静态中间件就像这样。

 app.use(express.static(path.join(__dirname, 'public'))); 

这告诉快速寻找应用程序的公共目录中的静态文件。

一旦你指定了这一点,只需将你的浏览器指向文件的位置,它应该显示。

如果你想呈现视图,那么你必须使用合适的渲染器。渲染列表是在合并中定义的。一旦你决定使用哪个库就安装它。我使用胡子,所以这里是我的一个片段configuration文件

 var engines = require('consolidate'); app.set('views', __dirname + '/views'); app.engine('html', engines.mustache); app.set('view engine', 'html'); 

这是干什么的

  • 查找要在视图目录中呈现的文件

  • 使用胡子渲染文件

  • 该文件的扩展名是.html(你也可以使用.mustache)

简单的方法是使用EJS模板引擎来处理.html文件。 把这一行放在你的视图引擎设置旁边:

 app.engine('html', require('ejs').renderFile); 

我想你可能需要声明一个视图引擎。

如果你想使用视图/模板引擎:

app.set('view engine', 'ejs');

要么

app.set('view engine', 'jade');

但是为了呈现纯html,看到这个post: 渲染基本的HTML视图? 。

这就是我为了渲染html文件所做的。 它解决了错误。 通过在项目文件夹中执行以下命令来安装合并胡须

 $ sudo npm install consolidate mustache --save 

并对您的app.js文件进行以下更改

 var engine = require('consolidate'); app.set('views', __dirname + '/views'); app.engine('html', engine.mustache); app.set('view engine', 'html'); 

现在,html页面将被正确渲染。