Мне удалось иметь работающий контроллер прерывания в nodejs в локальной среде, что-то вроде этого:
const signal = controller.signal;
setTimeout(() => controller.abort(), 5000);
fetch(url, { signal }).then(response => {
return response.text();
}).then(text => {
console.log(text);
});
Так что я могу отменить запрос через n секунд. Он работает без проблемы в локальной среде, однако при развертывании в AWS в лямбда-я I с ошибкой
TypeError: Expected signal to be an instanceof AbortSignal
После поиска в источнике модуля выборки кажется, что эта строка является виновником :
!isAbortSignal(signal)
Из этой функции: *
function isAbortSignal(signal) {
const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);
return !!(proto && proto.constructor.name === 'AbortSignal');
}
В локальном proto.constructor.name
указано как «AbortSignal», в то время как в AWS lambda оно заканчивается Я был просто «а».
Я искал вокруг, но не смог найти ничего конкретного c о том, почему это не работает. Любые советы по этому поводу?