【问题标题】:Multiple routes for static html pages in ExpressExpress中静态html页面的多个路由
【发布时间】:2017-08-04 06:12:28
【问题描述】:

我正在尝试从 Express 提供 2 个静态 HTML 页面,但是在正确提供 index.html 时,当我尝试访问 /about 路由时出现错误:

错误:ENOENT:没有这样的文件或目录,stat '/var/www/html/myapp/about.html' 在错误(本机)

var express = require('express'),
  app = express(),
  http = require('http'),
  httpServer = http.Server(app);

app.use(express.static(__dirname + '/html_files'));

app.get('/', function(req, res) {
  res.sendfile(__dirname + '/index.html');
});

app.get('/about', function(req, res) {
  res.sendfile(__dirname + '/about.html');
});


app.listen(3000);

我可以将“/about.html”更新为“/html_files/about.html”,然后它就可以工作了,但是虽然这解决了问题,但我不明白为什么它不能按原样工作。

【问题讨论】:

  • 您的静态路由需要指向这样的文件:__dirname + '/html_files/about.html',而不仅仅是:__dirname + '/about.html'

标签: node.js express


【解决方案1】:

看起来正确。

app.get('/'... 将被忽略,因为服务器已经找到与此请求匹配的静态 index.html

app.get('/about'... 失败,因为您尝试发送的文件的 URL 不正确。如果您要求/about.html,它将由静态中间件正确发送。

【讨论】:

  • 请你解释一下你的意思,因为我写了很多例子,如果不输入实际的目录名,就无法发送/about.html,如果是这样,目的是什么express.static 的?这不起作用:app.get('/about', function(req, res) { res.sendfile('about.html'); });
  • express.static 只是设置了目录,默认使用可以很方便的直接从中获取文件。例如。 http://example.com/about.html 将返回您的 about.html。如果使用静态,您需要它使用相同的 url,请将其发送到 /your_public/about/index.html。如果您仍然想要 /about 请求上的 about.html,您将需要更多操作。我对此实施没有解决方案
猜你喜欢
  • 2011-08-03
  • 1970-01-01
  • 1970-01-01
  • 2019-01-22
  • 2015-02-24
  • 2016-07-23
  • 2014-10-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多