问题标签 [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 投票
2 回答
2171 浏览

reactjs - 使用 Koa2 提供静态文件

当有人访问路由时,如何使用 Koa2 提供静态文件?我尝试了数以百万计的东西,但我总是收到未找到的消息。服务器已响应状态 404

0 投票
1 回答
102 浏览

node.js - IntelliJ IDEA 找不到 KoaJS 方法

目前,IntelliJ IDEA 报告 KoaJS 的方法是未定义的。

在此处输入图像描述

有没有人在 KoaJS 中使用 intellij idea 并且 intellisense/code completion 正常工作?

0 投票
1 回答
95 浏览

javascript - React-router 和服务器端渲染

我想用 react-router 和 Koa 渲染服务器端。但是,如果我包含完整的节点构建,我只会让它工作。这是因为我的组件需要 sass 编译、图像处理等。

如果我的前端应用程序是预编译的,并且从那里获得渲染为字符串的路由及其相关页面,那就太好了。

现在我从 routes.js 文件中导入路由,该文件导出以下内容以及未编译的组件:

0 投票
1 回答
316 浏览

postgresql - ava js test GET 返回代码 204 POSTMAN GET 返回 200

我使用 koa js 2 和 postgres 数据库制作了一些 REST API 端点。

我有一个 setup/teardown 程序,它在运行任何测试之前创建/删除 postgres 数据库目录(例如 test_db)。(我使用 npm script 'pretest' hook 来做 db setup 和 'posttest' 来做 db teardown)。

当我运行 ava js 测试时,我有:

2 个 POST 测试(插入 2 行)- 这两个都通过
1 个 GET 测试(例如 get /users/1)- FAIL:响应代码是 204 而不是 200
1 个 PUT 测试(例如 POST /users/:id)- FAIL:响应代码是 204 而不是 200 。

我可以针对我的开发配置运行这些测试,它们通过了

我不明白 POST 如何成功(将一行插入到表中),然后刚刚插入的行的 GET 返回 204(无数据)。

目前没有发生测试数据库拆卸,所以我可以查看测试数据库并验证 POSTS 确实成功,插入的行具有正确的 ID 值(如预期的那样)。(例如,我可以看到一个 id==1 的用户和一个 id==2 的用户)所以在执行测试时调用端点 /users/1 或 /users/2 应该会成功。

如果我使用测试数据库启动我的服务器,并针对这些端点和测试数据库运行 POSTMAN,一切正常(例如 GET /users/1 返回正确,GET /users/2 也是如此)我得到 json 返回和 200 的代码而不是 204。

我不明白为什么当对 POSTMAN 的相同调用返回代码 200 和有效的 json 响应时,我的 ava 测试会得到代码 204。

关于可能导致这种情况的任何想法?

0 投票
1 回答
2054 浏览

node.js - 在 Koa v2 中,仅在服务器启动时一次性执行中间件

我创建了这个中间件,它只在网站中的任何路线受到访问者的第一次点击时执行一次:

此代码仅在用户访问网站时首次执行,结果:

我的问题是我想在服务器启动时执行它,当网站上没有任何访问时。

此代码的未来目的将是检查数据库中是否存在表。

解决方案:

./bin/www在声明之前放置它const server = http.createServer(app.callback());有助于:

0 投票
3 回答
8810 浏览

typescript - 在 Typescript 中向 Koa2 的上下文添加属性

我想在 Typescript 中使用 Facebook 的 DataLoader 和 Koa2。我希望每个请求的 DataLoader 实例与我的每个请求的数据库连接一起使用。如何最好地做到这一点?

我目前的方法是增加 Koa2 上下文,但我失败了,因为我不知道如何修复类型定义。

这是我对模块扩充的尝试...

除了日志调用中显示的错误之外,Property 'dataLoader' does not exist on type 'BaseContext'当我导入上述内容并尝试调用dataLoader.

干杯

0 投票
0 回答
323 浏览

node.js - 在 Koa2 的根目录之外提供静态文件

我有一个使用 Koa2 的简单 NodeJS 服务器。它提供来自client文件夹的静态文件。但是,有一个config.js存在于client文件夹之外。现在我的client/index.html文件不能提供config.js

我试图通过添加一个应该服务于的路由器来解决这个问题config.js,如下所示:

client/index.html我只是有一个script包含。

但是浏览器说还是找不到config.js

如何在 Koa2 中完成这项工作?

0 投票
1 回答
784 浏览

google-app-engine - 在事务中获取实体的 id

我有一个数据存储事务,我在其中创建一个实体(用户),让数据存储为我生成 ID。

然后我想使用该 ID,以便我可以创建另一个实体(另一种)。

虽然使用常规数据存储“保存”api 可以做到这一点:

但是,在使用事务时这似乎是不可能的:

上面的输出“无法读取未定义的'then'”,即使文档中没有列出回调,我还是尝试了。

使用事务创建/保存实体时,如何检索该实体的自动生成 ID?

0 投票
2 回答
1499 浏览

node.js - koa2+koa-router+mysql 不断返回“未找到”

背景

我正在使用 koa2 和一些中间件来构建一个基本的 api 框架。但是当我在路由器中使用“ctx.body”发送响应时,客户端总是收到“未找到”

我的代码

./app.js

./router/gateway.js

然后是一个数据库包装器(mysql)

./db/async-db.js

./db/data-fetcher.js

我的跑步结果

当我在端口 3000 上启动服务器然后通过http://localhost:3000/gateway?time=5访问时,它总是返回“未找到”。但正如我所见,我已经使用过

发送响应。调试了一下,发现数据库处理做得不错,新数据插入也不错。

当我删除该数据库插入行时,它运行良好并返回成功信息。

有什么问题吗?

非常感谢!

更新 2017/04/27

现在我发现了问题。这是由于我的自定义中间件

代码如下 -

我将其更改为异步/等待方式,然后一切正常。

谁能告诉我这个中间件有什么问题?

0 投票
1 回答
121 浏览

react-router - 如何从 React Route 强制基于浏览器导航的 GET?

我的 React 应用程序中有一个登录页面,用户可以选择本地登录或通过社交网络 OAuth2 服务登录,该服务passport.js在基于 Koa 的 API 服务器上使用。

最初,我试图通过 ajax 调用后端,但似乎 OAuth2 服务器不允许我这样做,给我一个 CORS 错误,即使使用代理也是如此,所以我试图简单地Link在社交登录按钮周围放置一个将to属性添加到我的 API 后端 url,如下所示:

问题是当我单击按钮时,路由器拦截链接并尝试在该路径处呈现组件并设置浏览器位置(在导航栏中),但实际上并没有导致浏览器对资源执行 GET服务器——这导致我的通用 404 容器被渲染。我也尝试过使用普通的锚元素,但由于上述相同的原因而失败。

那么,我需要知道的是如何强制 React Router 忽略某个路径并允许浏览器对资源执行 GET?