我希望这个问题很清楚,我现在的精神资源已经耗尽了。
我在生产中发生了一些 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)
谁能指出我无法重写的原因?
编辑时:我不会删除这个问题,因为也许有人会发现它的用途,但我错了,它正在被重写,只是它的网址失败了。我不明白为什么,因为我找到了一个更简单的方法来解决我的问题。
您不能使用该名称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)
| 归档时间: |
|
| 查看次数: |
15845 次 |
| 最近记录: |