您使用express.static 的方式不正确。您不应该将单个文件传递给它以返回,即sendFile。 express.static 用于提供整个目录,应在 get 处理程序之外调用。
例如,这将在 URL 的根目录提供一个名为 public 的目录。任何未找到的文件请求都将通过中间件/路由器链传递到下一个处理程序:
app.use(express.static(path.join(__dirname, 'public')));
重要的是,这应该出现在您对 app.get、app.post 等的调用之前,而不是在处理程序中。
因此,如果您在public/myfile.html 有一个文件,该文件将在http://localhost:3000/myfile.html 提供,我假设您的服务器位于localhost:3000。如果您想在 URL 中添加额外的路径部分,例如http://localhost:3000/stat/myfile.html 那将是:
app.use('/stat', express.static(path.join(__dirname, 'public')));
如果你想提供一个文件,那么你可以使用sendFile,有点像这样:
app.get('/myfile.html', function(req, res) {
res.sendFile(path.join(__dirname, '/myfile.html'));
});
请注意,这是挑选出一个特定文件,因此任何资源(如 CSS)都需要单独处理。如果 HTML、CSS 等都在同一个文件夹中,则使用 express.static 来提供整个目录是有意义的。
还值得注意的是,express.static 有一个名为 index 的设置,如果对“/”的请求进入,则默认提供名为 index.html 的文件。
进一步阅读: