nextjs 设置代理

根目录下新建 server.js 文件

const express = require('express')
const next = require('next')
const { createProxyMiddleware } = require("http-proxy-middleware")

// 配置运行端口
const port = process.env.PORT || 3000
// 判断是否为开发环境
const dev = process.env.NODE_ENV !== 'production'
// 初始化 app
const app = next({ dev })
const handle = app.getRequestHandler()

// 代理配置表,这里和一般的 webpack 配置是一样的。
const proxyTable = require('./config/prod.config.js')
// const proxyTable = {
//   '/uaa/oauth': {
//     target: 'http://10.0.2.66:8603',
//     pathRewrite: {
//       '^/uaa/oauth': '/uaa/oauth'
//     },
//     changeOrigin: true
//   }
// }

app.prepare().then(() => {
  const server = express()

  // 如果是开发环境,则代理接口
  Object.keys(proxyTable).forEach((key) => {
    server.use(key, createProxyMiddleware(proxyTable[key]));
  })

  // 托管所有请求
  server.all('*', (req, res) => {
    return handle(req, res)
  })

  server.listen(port, (err) => {
    if (err) throw err
    console.log(`> Ready on http://localhost:${port} 或 http://127.0.0.1:${port}`)
  })
}).catch(err => {
    console.log('Error:::::', err)
})

配置文件

api.config.js

// const PRODUCTION = 'production'

// true:生产环境
// const isProd = process.env.NODE_ENV === PRODUCTION || process.env.PROD_ENV === PRODUCTION

// docker api配置
const NODE_PRO_URL = process.env.NODE_PRO_URL

// host api 配置
const HOST_URL = '10.202.11.16'

// 生产环境URL
const proUrl = NODE_PRO_URL || `http://${HOST_URL}:25097`

const baseUrl = proUrl

module.exports = {
  // isProd,
  baseUrl,
}

prot.config.js

module.exports = {
host: process.env.HOST || '127.0.0.1',
port: process.env.PORT || 3000
}

prod.config.js

const { baseUrl } = require('./api.config.js')

module.exports =  {
  '/api': {
    target: baseUrl,
    pathRewrite: { '^/api': '' },
    changeOrigin: true,
  },
 }

特别注意:

需要修改package.json命令

"scripts": {
  "debug": "node server.js --hostname 127.0.0.1",
  "build": "next build",
  "start": "NODE_ENV=production node server.js",
  "lint": "next lint"
},

文章参考:https://cloud.tencent.com/developer/article/1914387

posted @ 2023-08-10 11:43  DL·Coder  阅读(857)  评论(0编辑  收藏  举报