首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >错误:未捕获(在承诺中):错误:无法匹配任何路由。Spring boot + Angular

错误:未捕获(在承诺中):错误:无法匹配任何路由。Spring boot + Angular
EN

Stack Overflow用户
提问于 2019-03-08 16:38:12
回答 1查看 292关注 0票数 1

我是Angular和Spring Boot的新手,我想开发一个Web应用程序。

我遵循了一个教程,现在我陷入了死胡同。链接到教程:https://developer.okta.com/blog/2018/08/22/basic-crud-angular-7-and-spring-boot-2?fbclid=IwAR2aR0Ku7oBhYM32zkxZGJXqStnRB1Lhg_K0pUO8XipZu2eiMs0ojikIY-Y

当我运行代码时,我从浏览器收到这个错误。

我猜不知何故url不匹配。

这是Spring中的代码:

OfferController .java

代码语言:javascript
运行
复制
@RestController
public class OfferController {

   @Autowired
   private OfferService offerService; 

   @CrossOrigin( origins= "http://localhost:4200" )
   @GetMapping("/offers")
   public List<Offer> getAllOffers() {
       return offerService.getAllOffers();
   }
}

OfferRepository.java

代码语言:javascript
运行
复制
@RepositoryRestResource
@CrossOrigin(origins = "http://localhost:4200")

public interface OfferRepository extends JpaRepository<Offer, String>{}

来自Angular的代码:

代码语言:javascript
运行
复制
export class OfferService {

   constructor( private http: HttpClient) { }

   getAll(): Observable<any> {
     return this.http.get('//localhost:8080/offers');
   }
}

错误是:

代码语言:javascript
运行
复制
ERROR Error: Uncaught (in promise): Error: Cannot match any routes. URL Segment: 'offers'
Error: Cannot match any routes. URL Segment: 'offers'
    at ApplyRedirects.push../node_modules/@angular/router/fesm5/router.js.ApplyRedirects.noMatchError (router.js:2469)
    at CatchSubscriber.selector (router.js:2450)
    at CatchSubscriber.push../node_modules/rxjs/_esm5/internal/operators/catchError.js.CatchSubscriber.error (catchError.js:34)
    at MapSubscriber.push../node_modules/rxjs/_esm5/internal/Subscriber.js.Subscriber._error (Subscriber.js:80)
    at MapSubscriber.push../node_modules/rxjs/_esm5/internal/Subscriber.js.Subscriber.error (Subscriber.js:60)
    at MapSubscriber.push../node_modules/rxjs/_esm5/internal/Subscriber.js.Subscriber._error (Subscriber.js:80)
    at MapSubscriber.push../node_modules/rxjs/_esm5/internal/Subscriber.js.Subscriber.error (Subscriber.js:60)
    at MapSubscriber.push../node_modules/rxjs/_esm5/internal/Subscriber.js.Subscriber._error (Subscriber.js:80)
    at MapSubscriber.push../node_modules/rxjs/_esm5/internal/Subscriber.js.Subscriber.error (Subscriber.js:60)
    at TapSubscriber.push../node_modules/rxjs/_esm5/internal/operators/tap.js.TapSubscriber._error (tap.js:61)
    at resolvePromise (zone.js:831)
    at resolvePromise (zone.js:788)
    at zone.js:892
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:423)
    at Object.onInvokeTask (core.js:16147)
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:422)
    at Zone.push../node_modules/zone.js/dist/zone.js.Zone.runTask (zone.js:195)
    at drainMicroTaskQueue (zone.js:601)

如果我没记错的话,它应该是这样工作的:当访问http://localhost:4200时,它应该从http://localhost:8080/offers返回数据。

请帮帮我!

EN

回答 1

Stack Overflow用户

发布于 2019-03-08 16:49:39

错误错误:未捕获(在promise中):错误:无法匹配任何路由。URL段:'offers‘错误:无法匹配任何路由。URL段:“优惠”,地址为

你正试图在你的angular应用程序中的某个地方访问/offers路由,但是你还没有这样的定义:

代码语言:javascript
运行
复制
const routes: Routes = [
  ...
  {
    path: 'offers',
    component: OffersComponent
  }
];

本教程tutorial中没有您指定的路由offers

此外,在解决此错误后,您还会遇到另一个错误,因为使用path //localhost:8080/offers for http.get是不正确的。您需要像这样指定它:

代码语言:javascript
运行
复制
getAll(): Observable<any> {
  return this.http.get('http//localhost:8080/offers');
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55059452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档