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