Почему app.use () не обслуживает каталог 'publi c', когда я сохраняю файл, хотя путь кажется правильным? - PullRequest
0 голосов
/ 13 марта 2020

Я следую слегка устаревшему учебнику по узлу и express, и мой код идентичен учебнику, но app.use не обслуживает каталог publi c, как я sh. Когда я go на root localhost: 3000, я все еще вижу Погода , как в тегах на строке 19. Когда я удаляю его, я ничего не вижу, включая каталог publi c index. html file.

enter image description here

Вот мой индекс. html file:

<!DOCTYPE html>
<html lang="en">
<head>
    <!-- <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge"> -->
    <title>Document</title>
</head>
<body>
    <h1>From a static file.</h1>
</body>
</html>

Вот мое приложение. js script:

/* nodejs script that will create, configure, and start the server.

run script: node src/app.js
keep server running: nodemon src/app.js
*/

const path = require('path');
const express = require('express');

const app = express();
const publicDirectoryPath = path.join(__dirname, '../public'); // abs path to serve


// STACKOVERFLOW -  WHY ISN'T THIS SERVING UP PUBLIC DIRECTORY?
app.use(express.static(publicDirectoryPath)); // serve 'public' directory

// create root route
app.get('/', (req, res) => {
    res.send('<h1>Weather</h1>');
});

// create a help route
app.get('/help', (req, res) => {
    res.send([
        {name: 'Barack H. Obama'},
        {name: 'George W. Bush'},
        {name: 'William J. Clinton'}
    ]);
});

// create an about route
app.get('/about', (req, res) => {
    res.send('<h1>About</h1>');
});

// create a weather route
app.get('/weather', (req, res) => {
    res.send({
        forecast: 'rain',
        location: 'Los Angeles'
    });
});

// port 3000 is common development port, starts server
app.listen(3000, () => {
    console.log('Server is up on port 3000');   // never displays in browser
});

1 Ответ

0 голосов
/ 13 марта 2020

это должно быть public вместо ..public вот так const publicDirectoryPath = path.join(__dirname, 'public')

Поскольку app.js и public совместно используют один и тот же родительский каталог на одном уровне. Так что ..public будет указывать на dir public вне src, который недоступен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...