Возврат страницы через HTTP с экспрессом - PullRequest
0 голосов
/ 30 июня 2019

У меня есть папка «Public», которая содержит файл index.html long с некоторыми файлами JavaScript и библиотекой.Когда кто-то пытается получить доступ к пути продуктов (mydomain.com/products), я хочу отобразить этот файл index.html, но клиент также должен получить все JavaScript и библиотеки.Вот код для того, как я первоначально обработал запрос HTTP.

const express = require('express')
const app = express()
const bodyParse = require('body-parser')

const productRoutes = require('./api/routes/products')
const orderRoutes = require('./api/routes/orders')

app.use(bodyParse.urlencoded({extended: false}))
app.use(bodyParse.json())

// Routes which handle requests
app.use('/products', productRoutes)
app.use('/orders', orderRoutes)

В файле products.js я продолжаю маршрутизацию следующим образом:

const express = require('express')
const router = express.Router()

router.get('/', (req, res, next) => {
    /*res.status(200).json({
        message: 'Handling GET requests to /products'
    })*/
    res.status(200).render("../../public")
})

Код, который я закомментировал, работает отлично, но я с трудом отвечаюсо страницей "публичной" папки.Я не могу вспомнить все, что я пробовал, но использование .render или .sendFile в общедоступном каталоге мне не помогло.

Когда я пытаюсь получить доступ к маршруту / products, я получаю сообщениес пустым сообщением об ошибке.Так как он ничего не возвращает по маршруту / products, он продолжает работу с файлом до обработчика ошибок.Сообщение об ошибке пустое.

Любые идеи о том, как отобразить страницу со всем содержимым папки, были бы великолепны!

Ответы [ 2 ]

0 голосов
/ 30 июня 2019

Вы должны настроить путь для выразить статический с помощью:

//app.js | server.js

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

Затем, например, у вас есть файл как: /public/you.html

В вашем приложении,Вы можете использовать этот файл как путь /you.html

И то же самое со всеми типами файлов *.js, *.css, ...

Исправление ошибки не может отображать ошибку Запустите cmd npm install ejs Att to app.js :

app.set('view engine', 'ejs');

После этого вы создадите 1 файл error.ejs в папке views :

//error.ejs
<%=error%>

Goodluck

0 голосов
/ 30 июня 2019

Попробуйте: app.use('/products', express.static('public'))

Это делает ваш "публичный" каталог видимым из маршрута / products.

express.static () документы

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