• Next.js 配置接口跨域代理转发


    使用 create-next-app 创建的 Next.js 项目配置接口跨域代理转发需要用到 custom server 功能。
    先安装好 express 和 http-proxy-middleware

    yarn add express http-proxy-middleware
    

    在项目根目录下新建 server.js 文件,写入以下代码

    // server.js
    const express = require('express')
    const next = require('next')
    const proxyMiddleware = require('http-proxy-middleware')
    
    const devProxy = {
        '/api': {
            target: 'http://localhost:8000', // 端口自己配置合适的
            pathRewrite: {
                '^/api': '/'
            },
            changeOrigin: true
        }
    }
    
    const port = parseInt(process.env.PORT, 10) || 3000
    const dev = process.env.NODE_ENV !== 'production'
    const app = next({
        dev
    })
    const handle = app.getRequestHandler()
    
    app.prepare()
        .then(() => {
            const server = express()
    
            if (dev && devProxy) {
                Object.keys(devProxy).forEach(function(context) {
                    server.use(proxyMiddleware(context, devProxy[context]))
                })
            }
    
            server.all('*', (req, res) => {
                handle(req, res)
            })
    
            server.listen(port, err => {
                if (err) {
                    throw err
                }
                console.log(`> Ready on http://localhost:${port}`)
            })
        })
        .catch(err => {
            console.log('An error occurred, unable to start the server')
            console.log(err)
        })
    

    相应地修改 package.json

    "scripts": {
            "dev": "node server.js",
            "build": "next build",
            "start": "NODE_ENV=production node server.js"
        },
    

    如下,所有接口以 /api 开头即可。

    const { data } = await axios.post('/api/users/', options)
    
    博客已迁移到 blog.pythonking.top,如果地址失效或者有其他问题请到 github.com/DongchengWang/my-blog
  • 相关阅读:
    C# 项目提交过程中感受
    C# 工作中遇到的几个问题
    C# Enum Name String Description之间的相互转换
    Win 10下安装 Redis
    Entity Framework 学习系列(3)
    Entity Framework 学习系列(2)
    Entity Framework 学习系列(1)
    解决 win10 家庭版环境下 MySQL 的ODBC驱动下载及安装
    Echarts 学习系列(3)-Echarts动态数据交互
    Echarts 学习系列(2)-常见的静态ECharts图
  • 原文地址:https://www.cnblogs.com/stardust233/p/12193833.html
Copyright © 2020-2023  润新知