@symblight
///

Как обратиться к запросам если они игнорируются, единственный запрос обращается к index.html?

Я использую webpack-dev-middleware, и обращаю к index.html таким вот образом:
app.get('/*',(req,res)=>{
      res.sendFile(path.join(__dirname,'./public/index.html'));
  });

беда в том, что у меня есть другие запросы:
router.get('/list',(req,res)=>{
    ...
});

router.post('/create',(req,res)=>{
  ...
});

router.delete('/del/:id',(req,res)=>{
    ....
});

export default router;

и потом обращаюсь
app.use('/*',api);

Из-за того, что я обращаюсь к index.html, на любой запрос я получаю index.html. Как мне совместить и правильно ли я делаю?

Код
import api from './server/routers/index.js';
  import webpack from 'webpack';
  import webpackDev from 'webpack-dev-middleware';
  import webpackHot from 'webpack-hot-middleware';

app.use(bodyParser.json());
  app.use(morgan('dev'));
  app.use(webpackDev(compiler,{
      stats:{
          colors: true
      }
  }))
  app.use(webpackHot(compiler));

  app.use('/*',api);
  app.get('/*',(req,res)=>{
      res.sendFile(path.join(__dirname,'./public/index.html'));
  });


index.js
import express from 'express';
import * as api from './api.js';

const router = express.Router();

router.get('/list',(req,res)=>{
    api.listNote()
    .then(data=>res.status(200).send(data))
    .catch(err=>res.status(500).send());
});

router.post('/create',(req,res)=>{
    api.createNote(req.body)
    .then(data=>res.status(200).send(data))
    .catch(err=>res.status(500).send());
});

router.delete('/del/:id',(req,res)=>{
    api.deleteNote(req.params.id)
    .then(data=>res.status(200).send(data))
    .catch(err=>res.status(500).send());
});

export default router;


api.js
import mongoose from 'mongoose';
import '../models/note.js';

const Note = mongoose.model('note');

export function listNote(){
    return Note.find();
}

export function createNote(data){
    const note = new Note({
        title:data.title,
        color:data.color,
        text:data.text,
        createAt:new Date()
    });
    return note.save();
}

export function deleteNote(id){
    return Note.find({_id:id}).remove().exec();
}

  • Вопрос задан
  • 415 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Egche
Ученье-свет.
Этой записью
app.get('/*',(req,res)=>{});
ты перехватываешь все пути `/...` и отдаешь по ним index

Можешь в index.js засунуть (ну и убрать перехват в server.js - вангую, что первый пример кода так называется)
router.get('/',(req,res)=>{
      res.sendFile(path.join(__dirname,'./public/index.html'));
  });

И все должно заработать.

А правильно, статику nGinx'ом отдавать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы