问题标签 [koa2]

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 投票
3 回答
33347 浏览

javascript - Nodejs - 如何在单独的文件中分组和导出多个函数?

如何在 nodejs 中对多个函数进行分组和导出?

我正在尝试在 utils.js 中对我的所有 util 函数进行分组:

然后在 home.js 中导入:

我以为我会得到'example 1'上面的测试用例?

有任何想法吗?

0 投票
1 回答
3145 浏览

node.js - 在 Koa2 中向上下文对象添加辅助方法的最佳方法

我想向传递给我的控制器的上下文对象添加诸如view和之类的方法。json我在一个先于其他所有东西运行的中间件中执行此操作:

这些方法设置了一些常规配置对象(Renderer),中间件会解释这些对象,然后通过设置正确的ctx.body. 这让我可以轻松切换模板语言,并更轻松地组合 API 和模板请求。

除非它不起作用,因为之后await next()ctx.renderer默认的,而不是控制器设置的。我怀疑这是一个命名空间问题,但我不确定它来自哪里。

将函数附加到可以引用上下文而不将其传递给它们的上下文的最佳实践是什么?

0 投票
1 回答
1041 浏览

javascript - Koa-mount/router + socket.io 集成

出于好奇,我选择 Koa2 作为我的家庭节点服务器。不幸的是,我被困在为客户端/服务器通信实现 websockets 上。在以下应用程序中,socket.io 客户端拒绝连接到其服务器部分。任何想法/提示?

.....................

.....................

.....................

0 投票
1 回答
215 浏览

node.js - 如何用 koajs 的 trie-route 分隔路线?

如何使用koajs的trie-route分隔路线?

应用程序.js:

路线/get.js:

路线/post.js:

当我尝试将其发布在我的邮递员上时http://127.0.1.1:3000/

有什么想法可以解决这个问题吗?

我的 package.js:

0 投票
1 回答
1262 浏览

node.js - Nodejs - 如何捕获抛出的错误并格式化它?

我不太明白如何捕捉我在路线深处抛出的错误,例如:

未提供 _id 时我会得到:

但我不会像在纯文本中那样扔掉它。我更喜欢在顶层捕获它然后格式化它,例如:

根据文档

但即使在我的中间件中没有那个 try catch,我仍然得到_id is required.

有任何想法吗?

0 投票
1 回答
1168 浏览

node.js - Koa 每个请求被执行两次?

Koa每个请求被执行两次有什么原因吗?

在我的终端上,我得到:

有任何想法吗?

0 投票
0 回答
586 浏览

node.js - 使用护照和护照。在路线声明后进行身份验证

我正在处理的应用程序要求将所有身份验证代码放在路由声明之后,即我需要加载配置护照之前的所有路线(代码 B)。

我修改了这个例子:https ://github.com/rkusa/koa-passport-example 来帮助解释我想要完成的事情。上面的auth.js的精简版本如下:

通过拆分公共和私有路由工作的server.js (代码 A)的剥离版本如下:

需要的是上面的功能,但是路由都是在认证之前声明的,然后我们稍后捕获认证请求。我写了一个替代的server.js(代码 B)试图做到这一点:

在每个路由回调中,我向 ctx 添加一个 id 属性,其中 ctx.id = 0 表示请求是身份验证发布请求。问题:passport.authenticate 没有被调用。

然后我添加一个中间件来检查请求的其余部分是否经过身份验证(与代码 A 相同)。这部分有效,即我的私有路由 /home 重定向到 /login 因为用户未通过身份验证。

我遇到的另一个问题是发送注销请求时出现错误“ctx.logout 不是函数”。我想这与 passport.authenticate 根本没有被调用的事实有关。

我正在使用 Postman 发送 POST 和 GETs 而不是表单。

POST localhost:3000/login?username=test&password=test

获取本地主机:3000/家

获取本地主机:3000/注销

0 投票
1 回答
13412 浏览

koa - 如何在koa 2中有条件地重定向一些URL

这就是我的想法,伪代码。

请问如何修改它以使其工作?

0 投票
1 回答
1286 浏览

node.js - Koa2:如何编写中间件链?

所以在 express 中,我们可以有一个中间件链,复制一个例子:

请问在koa2中写这个的等效方法是什么?我正在考虑将它用于路由,对于每条路由,我都希望有一个中间件来检查用户是否已经登录。

谢谢 !

0 投票
1 回答
379 浏览

mysql - PassportJS MySql:我真的需要在每个反序列化用户上查找数据库吗?

我使用 koa-passport 进行身份验证,凭据存储在 mySQL 服务器上。每个用户名在数据库表中都有一个唯一的 ID。我正在使用一个非常简单的方案,我只使用 ID 进行序列化和反序列化,而不是使用整个用户对象。

对于身份验证,数据库中定义了一个存储过程,如果在数据库中找到提供的凭据,则返回 null 或用户 ID(存储过程同时查看用户名和密码,因此无需在 nodeJS 上处理。请假设为了简单起见,下面的代码片段直接为我们提供了值,而没有格式化 mySQL 数据库中的结果)

有没有办法避免在每次反序列化时访问数据库?