Согласно документу, res.write()
ожидает строку или буфер, а не число.
И, похоже, это место в http.write()
коде< /a>, где выдается исключение, если это не строка или буфер.
if (!fromEnd && typeof chunk !== 'string' && !(chunk instanceof Buffer)) {
throw new ERR_INVALID_ARG_TYPE('first argument',
['string', 'Buffer'], chunk);
}
Мне непонятно, почему одна только эта ошибка может вызвать конкретную ошибку, о которой вы сообщили, но ее определенно необходимо исправить, чтобы она работала должным образом.
Возможно, маршрутизатор перехватывает исключение и пытается установить статус 500? Я не знаю об этом. В любом случае, рад, что это решило проблему.
При более подробном рассмотрении кода Express кажется, что вокруг обработчика запросов есть try/catch
здесь:
Layer.prototype.handle_request = function handle(req, res, next) {
var fn = this.handle;
if (fn.length > 3) {
// not a standard request handler
return next();
}
try {
fn(req, res, next);
} catch (err) {
next(err);
}
};
Это попытается превратить вышеуказанное исключение в ответ об ошибке, но если заголовки уже были очищены, что, вероятно, было бы, когда вы вызвали res.write()
, то это вызвало бы ошибку, которую вы испытали об уже отправленных заголовках.
person
jfriend00
schedule
29.07.2019
res.write()
ожидает строку или буфер, а не число, но это, вероятно, не то, что вызывает ошибку, о которой вы спрашивали. - person jfriend00   schedule 30.07.2019