我有一个基本的Node.js应用程序,我试图使用Express框架启动。我有一个views文件夹,其中有一个index.html文件。但是我在加载网页时收到以下错误:

Error: Cannot find module 'html'

下面是我的代码。

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

app.use(express.staticProvider(__dirname + '/public'));

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

app.listen(8080, '127.0.0.1')

我错过了什么?


当前回答

表达4.倍

res.sendFile(path [, options] [, fn])

发送.html文件,没有模板引擎…

//...
// Node modules
const path = require('path')
//...
// Set path to views directory
app.set('views', path.join(__dirname, 'views'))
/**
 * App routes
 */
app.get('/', (req, res) => {
  res.sendFile('index.html', { root: app.get('views') })
})
//...
.
├── node_modules
│
├── views
│   ├──index.html
└── app.js

其他回答

index.js

var express = require('express');
var app = express();
app.use(express.static(__dirname + '/public'));


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


app.listen(3400, () => {
    console.log('Server is running at port 3400');
})

将index.html文件放到公共文件夹中

<!DOCTYPE html>
<html>
<head>
    <title>Render index html file</title>
</head>
<body>
    <h1> I am from public/index.html </h1>
</body>
</html>

现在在终端上运行以下代码

节点index.js

这些答案很多都已经过时了。

使用快捷3.0.0和3.1.0,以下工作:

app.set('views', __dirname + '/views');
app.engine('html', require('ejs').renderFile);

请参阅下面的注释,了解表达式3.4+的替代语法和注意事项:

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

然后你可以这样做:

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

这里假设views子文件夹中有视图,并且已经安装了ejs节点模块。如果不是,在Node控制台中执行以下命令:

npm install ejs --save
app.get('/', function (req, res) {
res.sendfile(__dirname + '/public/index.html');
});

向代码中添加以下行

将“jade”替换为“ejs”,“X.Y.Z”(版本)替换为“*”。json文件 “依赖”:{ “ejs”:“*” } 然后在app.js文件中添加以下代码: app.engine(“html”,要求(“ejs”).renderFile); App.set('视图引擎','html'); 记住把所有的。html文件保存在views Folder中

欢呼:)

我通常用这个

app.configure(function() {
    app.use(express.static(__dirname + '/web'));
});

只是要小心,因为它会共享/web目录中的任何内容。

我希望这对你们有帮助