问题标签 [node-request]

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 投票
0 回答
507 浏览

node.js - NodeJS 有时会因为在流式传输/管道文件时内存不足而被杀死

问题

我有一个带有请求模块的 NodeJS 服务器。我使用请求 pipe()来提供文件。

有时,应用程序抛出异常,所有下载都取消,我必须重新启动应用程序:

内存不足:杀死进程9342(nodejs)得分793或牺牲孩子
杀死进程9342(nodejs)total-vm:1333552kB,anon-rss:410648kB,file-rss:0kB

我编写了另一个脚本,它在意外结束时自动重启服务器(使用 childprocess 和 fork),有时会引发此错误:

致命错误:CALL_AND_RETRY_2 分配失败 - 进程内存不足


服务器数据
内存:500MB(我知道这个不多,但很便宜)
Ubuntu 12.04.5 LTS

NodeJS 版本:v0.10.36

假设

  1. 并行下载过多
  2. 与 RAM 相关的管道有问题

关于1:
当有人下载​​一个大文件时,它的一部分会加载到RAM中(我对此一无所知,一次说20MB,如果我错了,请纠正我)。当 400MB 可用并且以相同的下载速度进行 20 次当前下载时,服务器崩溃,因为他不能一次在 RAM 中加载超过 400MB。

关于 2:
除了pipe()我使用以下代码来跟踪当前和取消的下载:

pipe()没有正确关闭,并且它使用的 RAM 没有被清除。

问题

如果我的任何假设都是正确的,我该如何解决?如果不是,那可能是什么原因,或者更确切地说可能是什么原因(它是 NodeJS/请求模块/我的代码是错误还是错误,有没有更好的方法)?

完整代码

0 投票
1 回答
3889 浏览

vimeo-api - Vimeo 进度请求返回“options.uri 是必需参数”

使用 Vimeo 的 API 完成 PUT 上传时遇到问题。上传进度调用返回:“错误:options.uri 是必需的参数。”

请注意,一切似乎都可以正确上传;在存在错误的情况下,我只是对成功持怀疑态度。

相关代码(Node.js)如下:

0 投票
1 回答
454 浏览

node.js - NodeJS、Express 和路由与外部请求

所以我目前正在构建一个用于学习的小型个人应用程序,我有一个场景,我要使用其他第三方的 API,但有几个用于 1 个对象。例如,我有 1 个要呈现的仪表板,我想对不同的地方进行不同的调用,并生成一个包含三个请求响应的数据对象。

例如,目前我有一些(类似于)下面的东西,它发出请求并返回该数据,以及来自 find 方法和当前用户会话的其他数据。效果很好。

但现在我想提出超过 1 个请求......所以我不确定如何去做以及最佳实践?

下面的感觉就像它不会工作和混乱:

任何人都可以对此有所了解吗?

0 投票
1 回答
7633 浏览

node.js - 触发 GET 请求并获取节点 Stream

我正在尝试从我使用请求formData获得的图像中发送一个流

问题是请求在请求之后被触发formData。有什么办法可以通过管道识别图像请求吗?但是可以自由地向formData?

例如:

如何开火:

request('http://visual-recognition-demo.mybluemix.net/images/horses.jpg') 所以响应可以用于req

更新:似乎http://visual-recognition-demo.mybluemix.net/images/horses.jpg响应Content-Length中缺少标题 ,您只会得到

Transfer-Encoding: chunked

更多细节在这里

0 投票
1 回答
839 浏览

javascript - 使用nodejs请求模块返回未定义的地理编码功能

基本上我有这个代码。我想将回调中的请求结果保存到一个变量中,然后我可以返回到程序的另一部分。

console.log(geocodeLoc('Hoxton')) 的结果在执行 console.log(result) 之前返回。

真正令人沮丧的是,console.log(result) 的结果正是我想要的。

这是程序的输出

我想要的只是 geocodeLoc 返回结果。我对NodeJS有点陌生,非常感谢任何帮助

0 投票
4 回答
928 浏览

node.js - Node.js 在本地范围内保留一个全局变量的副本

我有一个 Node.js 应用程序,它使用请求库来获取多个 URL。代码是这样的:

为简单起见,假设docs包含 [URL1, URL2, URL3, ...] 之类的 URL。在第一次迭代中,URL = URL1 并且请求被发送到该 URL。在第二次迭代中,向 URL2 发送一个请求,依此类推。但是,在循环结束时,URL = URLn。在事件完成函数中,当我记录 URL 时,我总是得到 URLn。但是,我需要能够获取 [URL1, URL2, URL3, ...] 的相应 URL。

任何想法,我如何维护 URL 的本地副本,当全局 URL 发生更改时该事件保持不变?

这一定很容易,但我无法弄清楚。

0 投票
1 回答
1487 浏览

javascript - 使用请求模块下载文件并将结果传递给流星和 node.js 中的响应

我想下载文件而不保存在磁盘上并将文件内容传递给响应。真的我想将文件作为流获取,然后将其传递给响应,客户端可以下载文件。例如使用下面的伪代码(使用iron-routermeteorrequest):

这个怎么做?

传递文件以即时响应而不下载到磁盘上的真正解决方案是什么?

0 投票
3 回答
2378 浏览

reactjs - 尝试从 componentWillMount 中异步调用的返回中设置状态时未定义文档

我在我的组件的 componentWillMount 调用中获取我的数据[实际上它在一个 mixin 中,但同样的想法]。ajax 调用返回后,我尝试 setState,但收到未定义文档的错误。

我不知道如何解决这个问题。有什么要等的吗?我应该在其中执行 setState 的承诺或回调?

这就是我想要做的:

0 投票
2 回答
14500 浏览

node.js - 将上传的文件流式传输到 HTTP 请求

我的目标是接受上传的文件并使用Wistia Upload API将其流式传输到Wistia。我需要能够向 HTTP 请求添加字段,并且我不希望文件接触磁盘。我正在使用NodeExpressRequestBusboy

下面的代码有两个console.log语句。第一个返回[Error: not implemented],第二个返回[Error: form-data: not implemented]。我是 Node 流媒体的新手,所以我可能在做一些根本错误的事情。任何帮助将非常感激。

0 投票
1 回答
262 浏览

mysql - nodejs 运行时在压力下测试时停止响应

我基本上是通过带有 mocha 的请求模块检查所有路线。

https://www.npmjs.com/package/request

我正在做压力测试,通过并排打开两个控制台窗口并同时运行它们。大多数时候测试都是成功的,但是当测试失败而没有超时错误时,就会有一个瞬间,并且从邮递员那里我有这个停止响应的特定路线。

它大约发生 7 次,我想知道我能做些什么来解决这个问题。

编辑: 增加到 4 个同时运行测试的控制台窗口,它们运行良好几次,但随后开始超时。

甚至 app.get、app.post 等路由上都没有控制台输出。

有什么建议么?

编辑

根据测试中的建议捕获了一些请求错误。

上述错误对应的代码是

编辑 2 使用控制台语句进一步深入挖掘,发现未调用 mysql 连接回调。附上截图并注意到一些连接限制,是因为这个吗?我正在使用连接池。

在此处输入图像描述

日志说强制关闭线程。

在此处输入图像描述

可能的答案:

这个线程帮助解决了这个问题。 https://github.com/felixge/node-mysql/issues/405

我设置waitForConnections: false然后开始看到错误->

所以在我看来,系统正在等待连接,但测试运行器没有等待并最终出现超时错误。

似乎对最大连接数也有一些限制,尽管我在每次查询后都调用了连接释放,但不确定这在生产系统上是如何工作的?我们有限制吗?