我正在尝试在Express的公共文件夹中提供登录页面,到目前为止,我仍然无法这样做。我尝试过这条路,但我不知道为什么它不起作用。我想拥有的是我可以在回调中包含更多代码,但是由于现在的方式,我可以做到这一点,当我尝试使回调成为完整功能时,也将无法正常工作。
My folder structure
- root
- server
- server.js
- public
- login
- index.html
const express = require('express');
const app = express();
const path = require('path');
app.listen(4000);
console.log('server started\n');
app.get('/', () => app.use(express.static(__dirname + '/public/login')));
// what i want to have
app.get('/', () => {
// serve file
});
答案 0 :(得分:0)
您应该在服务器启动时直接挂载服务的静态文件,而不是在第一个请求到达后挂载,因此此行:
app.get('/', () => app.use(express.static(__dirname + '/public/login')));
必须是:
app.use(express.static(__dirname + '/../public/login'));
在/server/
目录中启动代码时,您还必须向上移动一个文件夹,这可以通过/../
完成。
如果您只想从公用文件夹而不是其中的所有文件来服务index.html,那么您可以做的就是
app.get('/', (req, res) => res.sendFile('index.html', { root: __dirname + '/../public/login'));