随着 Angular 17.3 -> 18.0 升级,本地开发服务器 (
ng serve
) 被破坏了。我们使用它将本地开发实例连接到云中的后端以进行开发。没有配置更改,只有依赖项和不相关的代码级别迁移。
升级后,部分 API 请求成功,但部分返回 404,因此无法再使用本地开发服务器。更具体地说,有些请求总是有效,而另一些请求总是失败并返回 404,而且哪些请求似乎是随机的。例如。
/api/v1/me
和 /api/v1/project?usedIn=false
总是有效,但其他一些像 /api/v1/permissions/<username>
总是失败。
在 proxy-conf.json 中,我们必须更改路径通配符
{
"/rest/v1/*": {
"target": "https://company-fqdn.com:9080/app/api",
"secure": false,
"changeOrigin": true,
"pathRewrite": {"^/rest" : ""}
}
}
到
"/rest/v1/**"
,请注意双星号。另外,事后看来,成功的请求在 /rest/v1/
之后仅具有单个路径部分,而未成功的请求则具有多个路径部分,请参阅我原来的示例。
解释以及我发现这一点所采取的步骤:
ng serve --verbose
输出有关开发代理功能的详细信息Not rewriting <method> <url> because the client prefers JSON
index.html
以便客户端路由可以启动)收到带有指定 json 的 Accept
标头的请求时发出的错误消息,因此图书馆无法回复 index.html
http-proxy-middleware
也出现了。检查了该文档,多个示例显示了完整通配符的 **
语法,而不是单个 *
,后者仅适用于网址的单个部分。更改此解决了问题。package-lock
以检查 http-proxy-middleware
是否升级,因为它是传递依赖项,事实上,它从 2.0.6
到 3.0.0
...这可能是也可能不是导致问题。