Node.js 错误:找不到模块';html';带/:id

Node.js 错误:找不到模块';html';带/:id,node.js,express,routes,Node.js,Express,Routes,我最近在呈现html页面时遇到了express问题。 我的应用程序有以下组织: 应用程序/ server.js 观点/ index.html dashboard.html 容器/ show.html ...... 在server.js中,我声明了以下路由: app.configure(function(){ app.use(express.static(path.join(__dirname,'/views'))); }); app.get('/containers/:id',fun

我最近在呈现html页面时遇到了express问题。 我的应用程序有以下组织:


应用程序/
server.js
观点/
index.html
dashboard.html
容器/
show.html
......

在server.js中,我声明了以下路由:

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

app.get('/containers/:id',function(req,res){
   console.log("Inspect container");
   res.render('/views/containers/show.html');
});
在dashboard.html中,我有一个如下链接:

<a href="/containers/'+data[i].Id+'">Test</a>

但是,当我尝试访问以下链接时,会出现以下错误:


错误:找不到模块“html”
在Function.Module.\u解析文件名(Module.js:338:15)
在Function.Module.\u加载(Module.js:280:25)
at Module.require(Module.js:364:17)
根据需要(模块js:380:17)
在新视图中(/root/HarborJS/node_modules/express/lib/View.js:43:49)
位于Function.app.render(/root/HarborJS/node_modules/express/lib/application.js:488:12)
在ServerResponse.res.render(/root/HarborJS/node_modules/express/lib/response.js:759:7)
位于io.sockets.on.socket.on.exec.user(/root/HarborJS/server.js:32:7)
在回调时(/root/HarborJS/node_modules/express/lib/router/index.js:164:37)
at param(/root/HarborJS/node_modules/express/lib/router/index.js:138:11)


现在我真的不知道该怎么办。如果我做错了,请告诉我。

res.render用于为每个请求动态生成页面HTML服务器端。您已经向它传递了一个HTML文件的路径,但是HTML不是一种模板语言,因此它抛出了一个错误

如果您在
show.html
中没有任何模板逻辑,那么您只需将文件发送回,而不需要使用模板引擎,例如

res.sendfile(__dirname + '/views/containers/show.html');

如果确实有需要在服务器端渲染的内容,则应选择一个模板引擎(其中有许多),然后重命名文件以具有模板扩展名。

res.render
用于渲染模板,但是您告诉它呈现一个基本的HTML文件,而它不知道如何处理它,因为
HTML
不是一种模板语言。使用
'+数据[i].Id+'
,您想要实现什么?什么是
数据
?数据[i]。Id只是我从socket.io获得的一个Id。这里没有什么特别的。那我该怎么办?为了解决这个问题,我是否应该立即换用jade?谢谢你,你说的完全符合逻辑,我应该通过阅读一些文件自己弄明白。现在它已经非常清楚了。。“render”和“sendFile”方法应该做什么。。。谢谢,伙计