问题标签 [express-router]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
29 浏览

node.js - 由不正确的 Express 路由器处理的 API 请求

我们正在使用 express 框架创建一个 NodeJS 应用程序。在使用路由器参数时,我们遇到了意外的行为。由于我们没有准备好前端,因此正在 postman 中测试 API。有两个API定义如下

我们从邮递员那里发出请求“ http://localhost:3000/api/tif/test1/1 ”,收到的响应是“测试二”,它应该响应“测试一”。通过更改路由器的顺序,我可以获得预期的响应“测试一个”。我们无法推断出这种行为。

0 投票
1 回答
122 浏览

node.js - Express:匹配url中语言代码的路由

我正在尝试:lang?为此路线捕获两个字符的可选参数:

这是我的尝试:

但是因为/projects它将:lang?参数设置为pr.

我怎样才能避免这种情况?

0 投票
0 回答
461 浏览

reactjs - 为什么我的反应路由器没有将我的快速路由传递给服务器?

我试图将社交登录添加到我的(已经工作的)react/express 应用程序中,并且我让它在 localhost 中工作。但是,当我将其部署到生产环境时,社交登录不起作用。这就是它的开始方式

但是,在生产中,它在我的浏览器中停留在https://sample.com/api/auth/google 。因此,react 路由器似乎在 express 之前先捕获它。如何?

在 localhost 中,它可以工作,因为 package.js 中的代理

现在,我怎样才能为生产做到这一点?

顺便说一句,我所有的服务器 API 都以“/api/...”开头。此外,在我的反应路线中,我没有包罗万象的组件。

更新:这是我的 server.js

这是我的路线:

更新:这是摩根日志。我为每一行添加了一个数字以供参考。第 4 行从我单击发送“/api/auth/google”的链接开始,到第 6 行结束。

所以,基本上,请求并没有来快递服务器。实际上,如果我在反应中有一条全部路线,我可以看到它正在那里。

这是网络日志:

在此处输入图像描述

0 投票
1 回答
2500 浏览

node.js - 如何应用程序使用来自不同文件的所有路由

我正在尝试分离我的路线,以前我将它们包含在我的 app.js 中

/后端/app.js

我意识到这并不理想,因为我稍后会添加越来越多的路线,并且 app.js 会被它们污染

我现在要做的只是将 index.js 导入到 app.js 中,基本上这个索引有所有需要的路由

/后端/路由/索引

但它不起作用我在尝试请求登录路由时收到 404 错误

我像这样导出它们

module.exports = routes;

0 投票
1 回答
451 浏览

express - 无法验证中间件 JWT EXPRESS 中的令牌

我在验证 JWT 令牌时遇到问题。当我从邮递员发出 GET 请求时,验证不起作用。该请求可以在没有令牌的情况下工作。问题是如果我想在中间件上使用这个验证怎么办?我的代码有什么问题?

客户控制器:

用户.js:

应用程序.js:

0 投票
0 回答
58 浏览

node.js - 阻止 Angular 2 覆盖快速路由

我完全不知道为什么会发生这种情况,而且似乎无法在任何地方找到答案。基本上,我的“/”请求永远不会到达我的 node.js 服务器(使用 express),而是自动发送我的 index.html 文件。当我创建 Angular 2 项目时,我专门关闭了路由,因为我不需要它。所以路线根本不应该被角度看到,是吗?

路由.js

索引.html

当我向“/”发出请求时,它永远不会到达打印语句,而只是发送索引页。即使我注释掉 app.get('/'...) 下的所有内容,它仍然会发送登录页面。所以 Angular 是发送它的人,而不是服务器。我使用 Fiddler 查看了我的请求,'/' 返回 '200 OK' 并且没有重定向到 '/login'。但是,如果我直接进入“/login”,则请求会通过表达。

我是 Angular 的新手,我找不到任何会发生这种情况的原因。我根本没有使用 Angular 的路由模块。我尝试摆脱<base href="/">并将 href 更改为其他内容,但也没有做任何事情。

感谢任何人的帮助!如果需要,我可以编辑更多文件。我很困惑,请帮助。

0 投票
0 回答
33 浏览

node.js - node.js/express.js 应用程序中相同组件的问题

我目前在我的节点 js 应用程序中遇到了一些奇怪的事情。

我的 express.js 应用程序中有两个相同的组件。

每个都包含模型、服务、控制器和路由文件。

两者在模型中具有相同的集合字段,在 service.js 中具有相同的函数名称。

现在这是我的 API 的顺序:

两条路线都有这样的路线:

现在,问题是,这两个 api:

显示暑假的数据。

但是如果我改变调用路由文件的顺序:

两者都显示股票假期的数据。

对我来说真的很奇怪。我不明白为什么。以前有人遇到过这个问题吗?

0 投票
1 回答
419 浏览

node.js - 路由url参数问题:服务器响应状态为404 Node Express Router

我正在使用 Node.js 和 Express,但收到一条错误消息:

加载资源失败:服务器响应状态为 404(未找到)[ http://localhost:3000/recentbroadcasts/12-10-2018]

它工作正常,然后我尝试向 url 添加一个日期参数,然后我开始收到 404。我错过了什么?

下面是来自网页、app.js 和路由器文件的代码。

我将路线从/recentBroadcasts 更改/recentbroadcasts/:date以尝试获取一些信息来调用我的数据库。然后我开始收到错误。

我必须做一些特别的事情才能使用路由参数吗?谢谢

从网页 Javascript 调用的路由

app.js 文件

index.js 文件

0 投票
1 回答
1258 浏览

express - 多次调用 Express 路由器中间件

使用 Express 和 Express 路由器。我在一个目录中有几个文件都实现了Express.Router. 我动态地要求它们,添加一些中间件,然后将它们附加到“元”路由器,最后调用app.use("/",MetaRouter).

我的问题是每条路由都会多次调用中间件。

这里是/index.js

这需要/routes/index.js

这是目录中的一个路由器文件的示例:

预期成绩

因此,当请求http://localhost/box时,我希望在控制台中恰好看到一次“In The Middleware”。

实际结果

相反,我看到多次记录“在中间件中”。它还取决于所需文件的顺序。因此,鉴于此文件列表(按此顺序需要):

  • /routes/A.js
  • /routes/B.js
  • /routes/C.js
  • /routes/D.js

如果请求路由,A.js则调用一次中间件。如果请求路由B.js,中间件会被调用两次。如果请求路由C.js,中间件会被调用 3 次。等等等等

0 投票
1 回答
2324 浏览

javascript - Express 中间件调用多次

我检查了与此主题相关的其他帖子,但在我的代码中找不到问题。

如果没有myMiddlewareon'/'路径,一切都会按预期工作。myMiddleware附加 as app.get('/', myMiddleware((req, res) => {thenmyMiddleware被多次调用而不res.sendFile(__dirname + '/client/dist/index.html')被调用。


编辑:下面的错误是用 jfriend00 的解决方案修复的。被多次调用的中间件仍然存在。原因是网站图标和其他一些资产没有被app.use('/static', express.static(__dirname + '/client/static'))线路捕获。修复路径也解决了第一个错误

最重要的是,我尝试删除下面的部分,但该应用程序根本无法运行。我的猜测是这里有 2 个错误。

我发布了一张关于删除时的外观的图片app.all('*'..)

在此处输入图像描述