【问题标题】:How to serve folder in 'public' with express如何使用快递在“公共”中提供文件夹
【发布时间】:2019-02-07 04:13:37
【问题描述】:

我正在尝试以快递方式在我的公共文件夹中提供登录页面,但到目前为止我一直无法这样做。我试图走这条路,但我不知道为什么它不起作用。我想要的是,我可以在回调中包含更多代码,但由于现在我可以这样做,当我尝试使回调成为一个完整的函数时,它也不起作用。

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 
});

【问题讨论】:

标签: javascript express


【解决方案1】:

你应该在服务器启动时直接挂载服务的静态文件,而不是在第一个请求到达之后,所以这一行:

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

【讨论】:

  • 它不起作用,我也想把它作为一个回调函数 app.get('/', () => { app.use(express.static(__dirname + '../public')); })
  • 见...静态路由是为了提供静态文件而不是监听端点请求(这不是资源)。所以如果你想列出请求到主路径,你实际上应该做的是使用 res.sendFile 或 res.send 一些数据
  • 静态文件请求以文件名和扩展名结尾
  • 你可以试试编辑部分吗?请记住,您应该有正确的 __dirname 路径,即您应该在命令行上运行 server.js 文件形式的 server/ 目录
  • 我稍后会尝试,忙于其他项目
猜你喜欢
  • 2016-08-22
  • 2011-07-23
  • 2017-09-02
  • 2019-03-31
  • 2013-12-28
  • 2015-01-01
  • 2012-06-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多