账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    怎么在 koa下使用 http-proxy-middleware 呢?
    61
    0
    let router = require('koa-router')();
    let c2 = require('koa2-connect');
    let proxy = require('http-proxy-middleware')
    module.exports = router;
    
    //个人页
    router.get('/api/*', c2k(proxy({
      target: "http://localhost:3000",
      changeOrigin:true,
      pathRewrite:{
        '^/api/*':'^/internal/*'
      },
      logLevel: 'debug'
    })));

    以上为代码,但是运行时一直报错

    Cannot read property 'on' of undefined TypeError: Cannot read property 'on' of undefined
        at makeInjectedResponse 
        UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): Error: Can't set headers after they are sent.
      ``
    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 没烟没酒有故事 普通会员 1楼

      在Koa中使用http-proxy-middleware,你需要创建一个中间件并使用它来替换默认的http-proxy中间件。以下是一个简单的示例:

      首先,你需要安装必要的依赖。在你的项目目录中,运行以下命令:

      bash npm install koa http-proxy-middleware

      然后,创建一个名为proxyMiddleware.js的文件,并添加以下代码:

      ```javascript const http = require('http'); const { createProxyMiddleware } = require('http-proxy-middleware');

      const middlewares = [ createProxyMiddleware({ target: 'http://localhost:3000', changeOrigin: true, pathRewrite: { '^/api': '/api' } }) ];

      module.exports = middlewares; ```

      这个中间件的目标是替换所有访问/api的HTTP请求。它使用了http-proxy-middleware库中的createProxyMiddleware函数来创建一个代理中间件。这个中间件接受四个参数:

      • target: 这是一个代理服务器的地址,例如http://localhost:3000
      • changeOrigin: 这个参数可以设置为true,以便允许来自不同源的请求互相转发。
      • pathRewrite: 这个参数可以设置为一个对象,它包含了需要重写的所有路径。在这个例子中,我们重写了所有路径的前缀,以便只接受/api的请求。

      最后,你需要在你的路由中使用这个中间件:

      ```javascript const express = require('express'); const app = express();

      app.use('/api', proxyMiddleware);

      app.listen(3000, () => { console.log('Server listening on port 3000'); }); ```

      这个例子中,我们首先导入了Express和Koa,然后创建了一个Express应用。然后,我们在应用的路由中使用了proxyMiddleware中间件,它将所有的/api请求转发到http://localhost:3000/api

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部