如何使用Express在“公共”文件夹中提供文件夹

时间:2018-09-01 10:17:58

标签: javascript express

我正在尝试在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 
});

1 个答案:

答案 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'));