express js无法访问多个静态页面

时间:2019-03-18 11:40:17

标签: javascript node.js express backend

我正在关注toturial在线课程,该课程教您如何使用express.js访问多个静态页面。我已经完全按照本教程进行了操作,并准确输入了所显示的代码,但是当我尝试使用导航栏浏览网站时,该代码不起作用,服务器将错误消息显示为Cannot GET /index.html或Cannot GET / about.html或无法GET /contact.html。到目前为止,我的代码如下。我将所有html文件保存在一个名为pages的文件夹中。我应该将所有的html文件复制到公用文件夹吗?我不明白在本教程中创建页面文件夹有什么意义。

enter image description here

 const path = require('path');

 const express = require('express');

  const app = new express();

  app.use(express.static('public'));

  app.get('/', (req, res) => {
   res.sendFile(path.resolve(__dirname, 'pages/index.html'));
 });

 app.get('/about', (req, res) => {
  res.sendFile(path.resolve(__dirname, 'pages/about.html'));
 });

 app.get('/contact', (req, res) => {
  res.sendFile(path.resolve(__dirname, 'pages/contact.html'));
 });

 app.get('/post', (req, res) => {
   res.sendFile(path.resolve(__dirname, 'pages/post.html'));
 });

 app.listen(4000, () => {
  console.log('App listening on port 4000')
})

5 个答案:

答案 0 :(得分:0)

如果您请求/about.html,则:

  • 它将与app.use(express.static('public'));匹配(因为它与每个 URL匹配)
  • 它将与app.get('/about', (req, res) => {不匹配(因为这不相同)
  • 它将与app.get('/about.html', (req, res) => {匹配(因为明确匹配)

app.use(express.static('public'));找不到about.htmlabout,因为public目录中没有该名称的文件。

res.sendFile(path.resolve(__dirname, 'pages/about.html'));将找到about.html,因为该路径与之明确匹配。

答案 1 :(得分:0)

您需要注册静态pages目录

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

您的路线应该可行。

app.get('/about.html', (req, res) => {
    res.sendFile(path.resolve(__dirname, 'about.html'));
});

答案 2 :(得分:-1)

尝试这种方式:

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

res.sendFile(path.resolve(__dirname+'/public/', 'pages/post.html'));

答案 3 :(得分:-1)

只需更改路径

例如 res.sendFile(path.resolve(__dirname, 'public/pages/', 'index.html'));

答案 4 :(得分:-1)

然后将页面文件夹移动到公用文件夹:

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