Почему мой Node.js ServerResponse **, завернутый в Proxy **, не отвечает? - PullRequest
0 голосов
/ 01 марта 2020

Это должен быть очень конкретный c и странный вопрос.

Очевидно, это работает,

import http from 'http';

http.createServer(function(_req, res) {
  res.end('yeah!');
}).listen(3000);

Но это не так. Сервер не отвечает на запрос.

import http from 'http';

http.createServer(function(_req, res) {
  const pres = new Proxy(res, {});
  pres.end('yeah!');
}).listen(3000);

Мне по какой-то причине нужно обернуть ServerResponse ... Я отлаживаю, но понятия не имею. Чем такой прокси-объект может отличаться от исходного объекта? Символы? Определения свойств? Если кто-то знает об этом, пожалуйста, напишите. Любая информация будет оценена.

1 Ответ

0 голосов
/ 04 марта 2020

Я понял это. Контекст функции (this) должен быть сам оригинальный ServerResponse.

import http from 'http';

http.createServer(function(_req, res) {
  const pres = new Proxy(res, {
    get(t, p, r) {
      const v = Reflect.get(t, p, r);
      if (typeof v === 'function') return v.bind(t);
      return v;
    },
  });
  pres.end('yeah!');
}).listen(3000);

Da.

...