【问题标题】:Next.js Redirects in next.config.js dynamiclyNext.js 在 next.config.js 中动态重定向
【发布时间】:2021-04-06 10:34:53
【问题描述】:

我想在项目构建后更新重定向路由。所以,我们在 BE Api 上有一个重定向路由。

我想动态获取它并实现到 next.config.js,这就是我试图做的。

const getUrls = () =>
    new Promise(resolve => {
        setTimeout(() => resolve(fetch("https://api.mocki.io/v1/a0b7f0b0").then(function(response) {
            return response.json();
          }).then(function(data) {
            return data.data;
          }) ), 3000);
    });

    // ExampleResponse = {
    //     "data":[
    //         {
    //             "source":"/test",
    //             "permanent":true,
    //             "destination":"/internet-application"
    //         }
    //     ]
    // }
    
module.exports = {
    poweredByHeader: false,
    async redirects() {
        return getUrls();
      },
}

有没有办法做到这一点。我只想从数据库更新重定向。如果数据库更新可以触发重定向而不停止项目

【问题讨论】:

    标签: javascript reactjs build next.js config


    【解决方案1】:

    您可以在构建时动态生成重定向路径,代码中的问题是您需要await 才能解决getUrls 承诺。

    module.exports = {
        poweredByHeader: false,
        async redirects() {
            return await getUrls();
        }
    }
    

    您还可以将getUrls 简化为根本不使用setTimeout

    但是,如果您想在运行时更新重定向,您必须为此设置自己的custom server

    【讨论】:

    • +1 感谢您的回答。但我必须重建项目才能从 url 获取更新的 json。我需要触发重定向 rools。例如,当我调用 /refreshRoutes 路径时,我需要实现新的 redirect.json 以进行项目,因此它始终由 api 更新。我不想每次都做项目,因为项目部署在服务器上。我希望我能清除我的状态。
    • 这不能使用next.config.js 中的redirects 完成,因为它仅在构建Next.js 应用程序时运行。您可能需要为此设置自己的custom server
    猜你喜欢
    • 2021-09-30
    • 2020-12-09
    • 2021-05-04
    • 1970-01-01
    • 1970-01-01
    • 2021-04-17
    • 2021-09-25
    • 2021-02-28
    • 2021-04-10
    相关资源
    最近更新 更多