You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JHipster网关升级后yarn test出现URL错误的修复方法咨询

解决JHipster网关升级后yarn test的URL拼接错误问题

刚碰到这个问题的时候我第一反应就是看日志里的URL对比——undefinedordas/api/companies/123和undefined/ordas/api/companies/123,明摆着是baseUrl和API路径之间少了个斜杠,导致两段字符串直接连在一起了。结合你是从JHipster 4.13.3升级到4.14.1的背景,大概率是升级过程中实体服务的URL拼接逻辑出了小疏漏,下面是具体的排查和修复步骤:

1. 检查实体服务的URL拼接代码

先找到对应实体的服务文件,比如你的CompanyService,路径大概是src/main/webapp/app/entities/company/company.service.ts(如果是JS项目就是.js文件)。

找到类似这样的代码段:

get(id) {
  return this.http.get(`${this.baseUrl}ordas/api/companies/${id}`);
}

这里的问题是this.baseUrl后面没有加斜杠,直接跟了ordas/api/companies,改成下面这样手动补上斜杠即可:

get(id) {
  return this.http.get(`${this.baseUrl}/ordas/api/companies/${id}`);
}

注:如果你的baseUrl配置本身末尾就带有斜杠(比如http://localhost:8080/),这里可能会出现重复斜杠,但HTTP请求会自动处理,不过更严谨的方式是统一规则——要么baseUrl带斜杠,要么拼接时加,避免混合使用。

2. 验证全局API配置

打开src/main/webapp/app/config/app.constants.ts(或.js),检查里面的API基础URL配置,比如:

export const constants = {
  API_URL: process.env.API_URL || 'http://localhost:8080'
};

如果这里的API_URL末尾没有斜杠,那在服务里拼接时就必须手动加;如果希望baseUrl自带斜杠,就改成:

API_URL: process.env.API_URL || 'http://localhost:8080/'

这样后续所有URL拼接都不用额外加斜杠了。

3. 排查升级带来的代码变更

因为你用了jhipster upgrade命令,升级过程中可能自动覆盖了部分实体服务的代码,导致原来正确的拼接逻辑被改掉了。可以用Git对比升级前后的代码差异,确认是不是这个原因——比如查看company.service.ts的历史提交,看URL拼接部分是不是被修改过。

4. 修复测试用例的期望(可选)

测试日志里的undefined应该是测试环境下baseUrl没有被正确注入导致的,但核心问题还是斜杠缺失。修复服务里的拼接逻辑后,测试用例的实际请求URL就会变成undefined/ordas/api/companies/123,和期望一致,测试就能通过了。

总的来说这个问题就是个小的URL拼接失误,补上斜杠就能解决,升级JHipster的时候偶尔会遇到这类自动生成代码的小问题,仔细对比日志里的差异就能快速定位~

内容的提问来源于stack exchange,提问作者1Z10

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:27:06