Я использую следующий код в своем файле server.js, но код в get никогда не работает с промежуточным программным обеспечением app.use(), но как только я закомментирую промежуточное программное обеспечение app.use, промежуточное программное обеспечение app.get() работает правильно. Может кто-нибудь сказать мне, почему это происходит? Вот фрагмент моего кода-
app.use('/',express.static('public'))
app.get('/',(req,res)=>{
console.info('get req on /')
res.send('returned') })
У вас случайно нет файла index.html в вашем статическом каталоге, так как маршрут / будет искать его. Также попробуйте переместить статику после получения, так как это также более эффективно.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Попробуйте app.use('/', express.static('public', {fallthrough: true}))
Редактировать: неважно, похоже, что Fallthrough используется по умолчанию, поэтому указание этой опции не изменит поведение.
пробовал. до сих пор не работает. Я запускаю все экспресс-приложение на http-сервере, чтобы socket.io также мог работать на том же сервере. Это что-то меняет?
Это просто меняет способ обработки ошибок. Файл, не найденный в статике, должен перейти к следующему маршруту.
Я имею в виду. он обслуживает статические файлы в «общедоступной» папке. Но это также должно перейти к следующему промежуточному программному обеспечению, например, app.get(). Не должно ли это. Но этого не происходит. Это происходит, когда метод next() не указан в промежуточном программном обеспечении. Но в express.static() я не думаю, что есть способ сделать это. Есть?
@ SaurabhSingh app on a http server , что вы имеете в виду, ваше экспресс-приложение должно работать на своем собственном порту. Если вы хотите смешать что-то вроде Apache и т. д., Вам нужно изучить возможность использования обратного прокси.
Опция fallthrough должна вызвать вызов next() статического промежуточного программного обеспечения, если файл не найден. github.com/expressjs/serve-static/blob/master/index.js#L107
раньше он работал на http-сервере, но теперь даже после того, как он работает на своем собственном порту, ошибка сохраняется
и как вызвать next(), если файл найден?
Он не будет вызывать next(), если файл найден. Что бы вы хотели сделать после подачи файла? Повторный вызов res.send() после обслуживания статического файла был бы плохим. Вы можете сделать что-то вроде res.on('end', () => console.info('res over')).
если файл найден, вы не можете вызвать следующий, вы не можете получить 2 ответа на один запрос. @TrevorDixon, я имею в виду, что это значение по умолчанию. Если файл не найден, он должен перейти к следующему маршруту по умолчанию.
Пробовал. Не работает