我有一个带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');
});
答案 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,我会更详细地解释它。