Express NodeJS无法找到模块' html'

时间:2016-09-15 08:51:13

标签: node.js express

我有一个带Express的节点服务器。我找不到模块' html'错误,即使我的代码看起来像这样,在我看来应该是正确的:

app.set('views', path.join(__dirname, 'build/views'));
app.use(favicon(path.join(__dirname, "build/favicon.ico")));
app.use('/scripts', express.static(path.join(__dirname, 'node_modules')));
app.use(express.static(path.join(__dirname, 'build')));

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

3 个答案:

答案 0 :(得分:3)

您必须为engine

设置HTML

将此代码包含在主文件中

var engines = require('consolidate');

app.engine('html', engines.mustache);
app.set('view engine', 'html');

答案 1 :(得分:2)

如果您只想提供静态文件而不将任何变量从服务器传递到客户端,最简单的解决方案是:

res.sendFile(path.join(__dirname + '/build/views/index.html'));

特别是当您在客户端使用AngularJS时。上述解决方案的问题是胡子使用{{}}作为变量识别。 AngularJS也可能导致错误!

答案 2 :(得分:0)

您似乎正在尝试显示静态index.html文件,但您将其视为模板。可能Express正在尝试找到html模板格式的模块,该模块不存在。

您可以尝试将索引作为静态文件发送,而不是使用用于呈现模板的res.render

前段时间我写了一个用Express提供静态文件的例子。它可以在GitHub上找到:

另请参阅my other answer,我会更详细地解释它。