В библиотеке http-proxy-middleware
документация гласит, что вы можете использовать опцию target
, чтобы указать, где вы хотите прокси-запрос. Однако они также позволяют вам использовать опцию router
, чтобы указать функцию, которая будет использоваться для функционального разрешения цели во время выполнения.
Документы: https://www.npmjs.com/package/http-proxy-middleware
Я использую TypeScript, и если я смотрю на файл декларации для прокси, я вижу это:
Здесь вы можете видеть, что и router
, и target
обнуляются. Я предполагаю, что если вы используете один, другой может быть опущен, но вам всегда нужно по крайней мере 1.
Однако, если я использую свойство router
, например:
app.use("/pipe", proxy({
changeOrigin: true,
router: (req: IIncomingMessageWithCookies) => {
return "https://www.google.com";
}
}));
И пропустить target
, тогда во время выполнения я получаю эту ошибку:
> node ./dist/app.js
C:\SkyKick\SkyKick.SEWR\src\node_modules\http-proxy-middleware\lib\config-factory.js:43
throw new Error(ERRORS.ERR_CONFIG_FACTORY_TARGET_MISSING)
^
Error: [HPM] Missing "target" option. Example: {target: "http://www.example.org"}
at Object.createConfig (C:\SkyKick\SkyKick.SEWR\src\node_modules\http-proxy-middleware\lib\config-factory.js:43:11)
at new HttpProxyMiddleware (C:\SkyKick\SkyKick.SEWR\src\node_modules\http-proxy-middleware\lib\index.js:17:30)
at module.exports (C:\SkyKick\SkyKick.SEWR\src\node_modules\http-proxy-middleware\index.js:4:10)
at Object.<anonymous> (C:\SkyKick\SkyKick.SEWR\src\dist\app.js:8:18)
at Module._compile (internal/modules/cjs/loader.js:689:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
at Module.load (internal/modules/cjs/loader.js:599:32)
at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
at Function.Module._load (internal/modules/cjs/loader.js:530:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)
Я понял, что могу поместить в target
что угодно, и он будет работать нормально, и моя функция router
- это то, что фактически определяет целевой прокси. Это просто ошибка в библиотеке или я неправильно понимаю, для чего используются эти 2 опции?