Javascript 在express中呈现HTML时出错

Javascript 在express中呈现HTML时出错,javascript,node.js,express,Javascript,Node.js,Express,我正在尝试一个简单的单页渲染,显然我做错了: var express = require('express'); var app = express(); app.get('/', function(req, res){ res.render('home.html'); }); app.listen(3000); console.log('Listening on port 3000'); 错误: Error: Cannot find module 'html' 我想加载一个带有C

我正在尝试一个简单的单页渲染,显然我做错了:

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

app.get('/', function(req, res){
   res.render('home.html');
});

app.listen(3000);
console.log('Listening on port 3000');
错误:

Error: Cannot find module 'html'

我想加载一个带有CSS/图像的页面,想知道在哪里存储CSS/图像/脚本/HTML以及如何加载它。我还没有找到许多示例express应用程序

使用
res.render
时,您正在渲染已定义的视图。文件说明:

使用使用呈现字符串响应的回调渲染视图。 当错误发生时,将在内部调用next(err)

对于特定的HTML,您必须使用
fs.readFile
加载文件,或者让Express使用呈现引擎,如Jade或EJS。例如,此代码示例将EJS渲染引擎应用于扩展名为
.html
的所有文件

app.engine('html', require('ejs').renderFile);
然后,您可以像这样渲染文件。这是一个将变量传递到HTML文件的示例,因为这就是嵌入式JavaScript的用途

app.get('/', function (req, res) {
  res.render('/file', {
    pass: 'arguments',
    to: 'the file here'
  });
});
这比每次加载时读取文件更方便,如下所示:

app.get('/', function (req, res) {
  fs.readFile('/index.html', 'utf8', function (err, data) {
    res.send(data);
  });
});
尽管这与您的问题无关,但这就是将变量传递给EJS的工作方式。它甚至可以处理
if
语句和
循环,因为它接受所有JavaScript。将
console.log
放入文件将在每次呈现文件时记录日志

<span><%= pass %></span>
<!-- after rendering -->
<span>arguments</span>
这样,您就根本不需要呈现HTML了。它将是静态服务的

我想加载一个带有css/图像的html,想知道存储css/img/js和html并加载的布局是什么?我还没有找到很多示例express js应用程序


假设您已经安装了express,您将在express项目中找到public文件夹。在公用文件夹中,您将找到三个文件夹-图像javascripts,和样式表。正如名称所示,将您的css/img/js放在各自的文件夹中。

您可以在express projectpublic文件夹中放置不使用任何模板的静态HTML文件,并使用以下方法调用它:

app.get('/', function(req, res) {
  res.redirect('/home.html');
});

您需要设置
express.static
或其等效项才能使其实际工作,正如几个月前的公认答案中所讨论的那样。
app.get('/', function(req, res) {
  res.redirect('/home.html');
});