Angular 错误:未捕获(承诺中):错误:无法匹配任何路由。URL段:';执行情况/190';
我试图模拟我的后端来开发前端,我正在使用库Angular 错误:未捕获(承诺中):错误:无法匹配任何路由。URL段:';执行情况/190';,angular,typescript,express,angular-ui-router,Angular,Typescript,Express,Angular Ui Router,我试图模拟我的后端来开发前端,我正在使用库expressjs来实现这一点 我有一个名为data.json的文件,其中包含以下对象: "singleExecutions":[ {"executionId":190, "label":"exe_190"}, {"executionId":191, "label":"exe_191"}, ...] 我想路由类型为/executionId/executionId的请求,以获取列表singleExecutions中具有我需要的特
expressjs
来实现这一点
我有一个名为data.json
的文件,其中包含以下对象:
"singleExecutions":[
{"executionId":190, "label":"exe_190"},
{"executionId":191, "label":"exe_191"},
...]
我想路由类型为/executionId/executionId
的请求,以获取列表singleExecutions
中具有我需要的特定Id的相应对象
阅读expressjs
的文档,我似乎应该这样做:
const express = require('express');
const data = require('./data');
// 1. Create an express router.
const router = express.Router();
// 2. Handle the requests.
router.get('/executions/:executionId', (req, res) => {
res.json(data.singleExecutions);
});
// 3. Start the server.
mockBackend.start(router);
注意:上面的一些变量(如mockBackend
)在代码段中被跳过,但它们没有问题,因为上面没有显示的其他请求都已正确路由
当我浏览url/executions/190
(例如)时,我得到以下异常:
ERROR Error: Uncaught (in promise): Error: Cannot match any routes. URL Segment: 'executions/190'
Error: Cannot match any routes. URL Segment: 'executions/190'
at ApplyRedirects.noMatchError (webpack-internal:///../../../router/esm5/router.js:1848)
at CatchSubscriber.eval [as selector] (webpack-internal:///../../../router/esm5/router.js:1813)
at CatchSubscriber.error (webpack-internal:///../../../../rxjs/_esm5/operators/catchError.js:108)
at MapSubscriber.Subscriber._error (webpack-internal:///../../../../rxjs/_esm5/Subscriber.js:136)
at MapSubscriber.Subscriber.error (webpack-internal:///../../../../rxjs/_esm5/Subscriber.js:110)
at MapSubscriber.Subscriber._error (webpack-internal:///../../../../rxjs/_esm5/Subscriber.js:136)
at MapSubscriber.Subscriber.error (webpack-internal:///../../../../rxjs/_esm5/Subscriber.js:110)
at MapSubscriber.Subscriber._error (webpack-internal:///../../../../rxjs/_esm5/Subscriber.js:136)
at MapSubscriber.Subscriber.error (webpack-internal:///../../../../rxjs/_esm5/Subscriber.js:110)
at LastSubscriber.Subscriber._error (webpack-internal:///../../../../rxjs/_esm5/Subscriber.js:136)
at ApplyRedirects.noMatchError (webpack-internal:///../../../router/esm5/router.js:1848)
at CatchSubscriber.eval [as selector] (webpack-internal:///../../../router/esm5/router.js:1813)
at CatchSubscriber.error (webpack-internal:///../../../../rxjs/_esm5/operators/catchError.js:108)
at MapSubscriber.Subscriber._error (webpack-internal:///../../../../rxjs/_esm5/Subscriber.js:136)
at MapSubscriber.Subscriber.error (webpack-internal:///../../../../rxjs/_esm5/Subscriber.js:110)
at MapSubscriber.Subscriber._error (webpack-internal:///../../../../rxjs/_esm5/Subscriber.js:136)
at MapSubscriber.Subscriber.error (webpack-internal:///../../../../rxjs/_esm5/Subscriber.js:110)
at MapSubscriber.Subscriber._error (webpack-internal:///../../../../rxjs/_esm5/Subscriber.js:136)
at MapSubscriber.Subscriber.error (webpack-internal:///../../../../rxjs/_esm5/Subscriber.js:110)
at LastSubscriber.Subscriber._error (webpack-internal:///../../../../rxjs/_esm5/Subscriber.js:136)
at resolvePromise (webpack-internal:///../../../../zone.js/dist/zone.js:809)
at resolvePromise (webpack-internal:///../../../../zone.js/dist/zone.js:775)
at eval (webpack-internal:///../../../../zone.js/dist/zone.js:858)
at ZoneDelegate.invokeTask (webpack-internal:///../../../../zone.js/dist/zone.js:421)
at Object.onInvokeTask (webpack-internal:///../../../core/esm5/core.js:4956)
at ZoneDelegate.invokeTask (webpack-internal:///../../../../zone.js/dist/zone.js:420)
at Zone.runTask (webpack-internal:///../../../../zone.js/dist/zone.js:188)
at drainMicroTaskQueue (webpack-internal:///../../../../zone.js/dist/zone.js:595)
我的路由器.get()
中肯定有配置不正确的地方,但我不明白是什么。。。有人能帮忙吗
注意:在同一代码中,如果我导航GET请求/executions
,它将通过以下方式正确路由:
router.get('/executions', (req, res) => {
res.json(data.executions);
});
。。。其余的都一样 您必须区分角度路由和后端路由。在我看来,您似乎正在导航到angular app对应的主机/端口上的
/executions/xxx
。此执行
路线可能在angular app上不存在,因此出现错误的原因
您需要在nodejs用于后端的主机/端口上导航到该路由
假设您在dev中并使用angular cli,那么您的angular应用程序将位于localhost:4200上,而后端位于localhost:4000上;因此,您需要导航到http://localhost:4000/executions/xxx
如果您也使用express为angular应用程序提供相同主机/相同端口的服务,那么您需要确保在注册angular路由之前在express中注册
/executions
路由。angular侧使用哪个Web服务器?这似乎是angular router而非express的错误。您似乎正在访问Angular应用程序,但在路由中没有与/executions/190
匹配的路由。通过浏览该URL,您应该会收到JSON或服务器错误,而不是任何JavaScript。如果你遇到JavaScript错误,你在一个网页上你是对的,我只是用一个相对的href导航页面,因此我在localhost:4200而不是后端!