Сначала укажите более точные c определения маршрутов, например:
app.use('/pilots/stripe', require('./routes/pilots/stripe'));
app.use('/pilots', require('./routes/pilots/pilots'));
, а более общие определения маршрутов - позже. Это гарантирует, что более специфичные c маршруты не будут сожраны более общими обработчиками.
Имейте в виду, что с app.use()
что-то вроде app.use('/pilots')
будет соответствовать любому маршруту, начинающемуся с /pilots
который будет включать все ваши /pilots/stripe
маршруты. Итак, вы хотите убедиться и поставить app.use('/pilots/stripe', ...)
перед app.use('/pilots', ...)
.
Еще одно наблюдение. В вашем обработчике /webhook
вам необходимо return
после отправки состояния ошибки, чтобы остальная часть вашего обработчика запросов не продолжала работать.
// Match the raw body to content type application/json
app.post('/webhook', bodyParser.raw({type: 'application/json'}), (request, response) => {
console.log("called!");
let event;
try {
event = JSON.parse(request.body);
} catch (err) {
response.status(400).send(`Webhook Error: ${err.message}`);
return; // <===== Add this
}
....
}
Это похоже на ошибку в актуальная документация по полосам.
Если я добавлю код для конечной точки перед кодом для маршрутизатора, веб-крючок будет обработан правильно.
Я бы предположил, что у вас есть промежуточное ПО bodyparser в другом месте на вашем сервере. Если это промежуточное ПО ДО этого маршрута, то этот маршрут не будет использовать его bodyParser.raw()
и получать данные так, как он хочет, и он не будет работать должным образом. Это связано с тем, что какое бы промежуточное программное обеспечение bodyParser ни выполнялось первым, оно читает тело, анализирует его и помещает его туда, где это промежуточное программное обеспечение настроено для его размещения. Как только тело прочитано, оно уходит из потока, поэтому любое другое промежуточное программное обеспечение, которое приходит и также пытается прочитать данные тела из потока, найдет поток пустым.
Итак, этот маршрут должен быть перед любым другим промежуточным программным обеспечением для синтаксического анализа тела, которое может обрабатывать JSON.
Если вы предоставили ссылку на полный код, мы могли бы посмотреть и посмотреть где это происходит.