2015-07-07 2 views
-1

Таким образом у меня есть экспресс-приложение и в app.js я это:Nodejs Экспресс продолжает служить тот же файл на все запросы

app.use('/index', function (req, res, next){ 
    res.sendFile(__dirname+'/index.html'); 
    } 

app.get('/script.js',function(req,res){ 
    res.sendFile(__dirname+'/public/script.js'); 

и после запуска сервера и введите локальный: 3000/индекс и приложение работает нормально, но здесь возникает проблема .. когда я изменить первый app.use() функция:

app.use('/', function (req, res, next){} 

так что я не придется вводить указательный часть в URL, все последующие запросы GET ответить index.html страницы и я попытался добавления

res.end(); after res.sendFile(); 

, но никакой другой ответ не отправляется после того, как может я решаю?

ответ

1

Ваш маршрут / действует как подстановочный знак и захватывает все запросы, а это означает, что все, что не соответствует маршруту, определенному ДО этого маршрута, будет поймано им. У вас есть два варианта здесь:

  1. Изменить app.use в app.get так, что вы явно только соответствие / (и только с помощью метода GET)
  2. Переместить маршрут к нижней всех ваших маршрутов

Как пояснялось на API Docs Express.js для app.usehere:

Маршрут будет соответствовать любому пути, который следует за его путем сразу с помощью «/». Например: app.use ('/ apple', ...) будет соответствовать «/ apple», «/ apple/images», «/ apple/images/news» и т. Д.

Смежные вопросы