Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 错误:未捕获(承诺中):错误:无法匹配任何路由。URL段:';执行情况/190';_Angular_Typescript_Express_Angular Ui Router - Fatal编程技术网

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而不是后端!