Next.JS 重写没有发生

use*_*694 6 next.js

我希望这个问题很清楚,我现在的精神资源已经耗尽了。

我在生产中发生了一些 Nginx 重写,我需要在前端的 nextjs 应用程序中重现此功能。

所以我的重写规则如下所示

const rewrites = process.env.NODE_ENV === "development" ?
  [{
    source: '/ovp/userdevices',
    destination: 'https://userdevices.backendservices.dk'
  },

  {
    source: '/ovp/userdevices/:path*',
    destination: 'https://userdevices.backendservices.dk/:path*'
  }
  ] : [];
Run Code Online (Sandbox Code Playgroud)

在我的配置中

async rewrites() {
    console.log("Rewrites called");
    return rewrites;
  },
Run Code Online (Sandbox Code Playgroud)

我得到控制台日志,数组就是它应该的样子。但我的 /ovp/userdevices url 永远不会被重写,因此我们始终运行 localhost:3000/ovp/userdevices。

我现在假设重写永远不会发生,因为这些应该在服务器端完成,也许所有内容都在前端渲染,但我不知道如何测试这个假设。

我当前的配置看起来像

{
  poweredByHeader: false,
  target: 'serverless',
  distDir: 'build',
  basePath: '',
  rewrites: [AsyncFunction: rewrites],
  redirects: [AsyncFunction: redirects],
  pageExtensions: [ 'route.js' ],
  env: {
    SUPPORTED_BROWSERS: 'chrome 84;chrome 83;edge 84;edge 83;firefox 79;firefox 78',
    APP_VERSION: '0.0.1',
    APP_NAME: 'some-app/app-self-service'
  },
  webpack: [Function: webpack]
}
Run Code Online (Sandbox Code Playgroud)

谁能指出我无法重写的原因?

编辑时:我不会删除这个问题,因为也许有人会发现它的用途,但我错了,它正在被重写,只是它的网址失败了。我不明白为什么,因为我找到了一个更简单的方法来解决我的问题。

Mic*_*ade 3

您不能使用该名称rewrites两次。使next.config.js看起来像这样:

module.exports = {
  async rewrites() {
    console.log("Rewrites called");
    return process.env.NODE_ENV === "development"
      ? [
          {
            source: "/ovp/userdevices",
            destination: "https://userdevices.backendservices.dk",
          },

          {
            source: "/ovp/userdevices/:path*",
            destination: "https://userdevices.backendservices.dk/:path*",
          },
        ]
      : [];
  },
};


Run Code Online (Sandbox Code Playgroud)