Error: Uncaught (in promise): Error: Cannot match any routes. URL Segment: 'executions/190'
Error: Uncaught (in promise): Error: Cannot match any routes. URL Segment: 'executions/190'
我正在尝试模拟我的后端来开发前端,我正在使用库 expressjs
来做这件事。
我有一个名为 data.json
的文件,其中包含如下对象:
"singleExecutions":[
{"executionId":190, "label":"exe_190"},
{"executionId":191, "label":"exe_191"},
...]
我想路由类型为 /executions/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)
肯定是我的 router.get()
中配置不正确,但我不明白是什么...有人可以帮忙吗?
注意:在相同的代码中,如果我导航 GET 请求 /executions
,它会被正确路由:
router.get('/executions', (req, res) => {
res.json(data.executions);
});
...其余的都一样。
你必须区分 angular 路由和后端路由。对我来说,您似乎正在导航至 host/port 上对应于 angular 应用程序的 /executions/xxx
。此 executions
路由可能不存在于 angular 应用程序中,因此出现错误
您需要在 nodejs 为您的后端使用的 host/port 上导航到该路由。
假设您在开发中并使用 angular-cli,例如您的 angular 应用程序将在 localhost:4200 上,而您的后端将在 localhost:4000 上;所以你需要导航到 http://localhost:4000/executions/xxx
如果您还使用 express 为 angular 应用程序提供相同的 host/same 端口,那么您需要确保在注册之前在 express 中注册了 /executions
路由angular.
的路线
我正在尝试模拟我的后端来开发前端,我正在使用库 expressjs
来做这件事。
我有一个名为 data.json
的文件,其中包含如下对象:
"singleExecutions":[
{"executionId":190, "label":"exe_190"},
{"executionId":191, "label":"exe_191"},
...]
我想路由类型为 /executions/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)
肯定是我的 router.get()
中配置不正确,但我不明白是什么...有人可以帮忙吗?
注意:在相同的代码中,如果我导航 GET 请求 /executions
,它会被正确路由:
router.get('/executions', (req, res) => {
res.json(data.executions);
});
...其余的都一样。
你必须区分 angular 路由和后端路由。对我来说,您似乎正在导航至 host/port 上对应于 angular 应用程序的 /executions/xxx
。此 executions
路由可能不存在于 angular 应用程序中,因此出现错误
您需要在 nodejs 为您的后端使用的 host/port 上导航到该路由。
假设您在开发中并使用 angular-cli,例如您的 angular 应用程序将在 localhost:4200 上,而您的后端将在 localhost:4000 上;所以你需要导航到 http://localhost:4000/executions/xxx
如果您还使用 express 为 angular 应用程序提供相同的 host/same 端口,那么您需要确保在注册之前在 express 中注册了 /executions
路由angular.