当前位置:   article > 正文

next.js 开启Proxy反向代理_nextjs proxy

nextjs proxy

本地开发使用

需要安装的包 http-proxy-middleware express

  1. const express = require('express')
  2. const next = require('next')
  3. const createProxyMiddleware = require('http-proxy-middleware').createProxyMiddleware;
  4. const hostname = '0.0.0.0'
  5. const port = parseInt(process.env.PORT, 10) || 8087
  6. const dev = process.env.NODE_ENV !== 'production' //只在开发环境使用
  7. const app = next({
  8.   dev,
  9.   hostname,
  10.   port
  11. })
  12. const handle = app.getRequestHandler()
  13. app.prepare()
  14.   .then(() => {
  15.     const server = express()
  16.     //写在这里可以获取环境变量
  17.     const devProxy = {
  18.       [process.env.NEXT_PUBLIC_BASE_API]: {
  19.         target: 'http://xxxx', // 外网测试环境
  20.         changeOrigin: true,
  21.         pathRewrite: { '^/api': '' },
  22.       },
  23.       [process.env.NEXT_PUBLIC_WEBSOCKET_PUSH_API]: {
  24.         target: 'ws://xxxx', // 外网ws测试环境
  25.         changeOrigin: true,
  26.         ws: true,
  27.         pathRewrite: { '^/wsapi': '' },
  28.       },
  29.     }
  30.     if (dev && devProxy) {
  31.       Object.keys(devProxy).forEach((context) => {
  32.         server.use(createProxyMiddleware(context, devProxy[context]))
  33.       })
  34.     }
  35.     server.all('*', (req, res) => {
  36.       handle(req, res)
  37.     })
  38.     server.listen(port, err => {
  39.       if (err) {
  40.         throw err
  41.       }
  42.       console.log(`http://0.0.0.0:${port}`)
  43.       console.log(`> Ready on http://localhost:${port}`)
  44.     })
  45.   })
  46.   .catch(err => {
  47.     console.log('An error occurred, unable to start the server')
  48.     console.log(err)
  49.   })
  1. package.json修改
  2. "scripts": {
  3. "dev": "node proxy.js", //代理文件文件位置
  4. "build": "next build",
  5. "build:test": "cross-env NODE_ENV=test next build",
  6. "build:mode": "cross-env ANALYZE=true next build",
  7. "start": "next start",
  8. "lint": "next lint"
  9. },

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/913662
推荐阅读
相关标签
  

闽ICP备14008679号