问题标签 [node-fetch]
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.
node.js - 在未指定 maxSockets 的情况下调用 HTTP 端点时在 Azure 应用服务上连接 ETIMEDOUT
从 Azure 应用服务中的 node.js 多次调用 HTTP[S] 端点时,我遇到了一些超时问题。
这是我的代码来演示这个问题。
在标准中型应用程序服务中运行此应用程序 3 或 4 次时(我使用 Kudu 运行它,但我在标准 Web 应用程序中发现此错误)对于每个请求,我都会收到以下错误:
几分钟(5/6)后没有执行请求,上面的代码再次工作。
我已经尝试过node-fetch
(https://www.npmjs.com/package/node-fetch)和request
(https://www.npmjs.com/package/request)。结果相同。agent
如果我没有指定一个并且与目标端点无关,则会出现同样的问题,我尝试了许多不同的端点(私有或公共)。
根据Microsoft 最佳实践agent
,node.js 应用程序应使用具有以下配置的保持活动:
事实上,在创建代理时:
一切都按预期工作。
这种行为是预期的吗?node.js 的最佳实践是什么?总是在 Azure 之外指定一个agent
with可以吗?maxSockets
更新:
另一个奇怪的行为是,如果我使用 3 或 4 次运行上述代码node index
,我希望在节点进程退出时连接会关闭,但似乎连接会保持打开几分钟。这可以是TIME_WAIT状态的影响吗?
javascript - 从 for 循环多次调用数组,然后删除 0 长度结果
这就是我想要实现的目标,我正在调用一个 api,导致基于邮政编码和半径的多个调用。根据人口密度,结果可能少至一个或多至二十个。此调用的结果作为没有信息的数组返回到多个条目。我需要做的是获取多个单独的数组并创建一个数组,该数组删除所有空数组并将每个单独的数组附加到一个数组中。当前进行多次调用的代码是:
console.logs 到 buildOutput 的结果如下所示:
所以这个半径为 4 英里的邮政编码的结果是 7 个邮政编码,其中 2 个当前有条目。对此的帮助将不胜感激,将七个单独的调用放入一个数组中,然后删除任何零条目。
javascript - 使用 fetch 保留图像元数据
我正在使用fetch从远程服务器下载图像,然后上传到 AWS S3 商店。下载、设置内容类型和上传工作正常,但在此过程中我丢失了图像中的图像元数据(例如版权、拍摄日期、相机等)。我进行了广泛的研究,但看不到如何使用 fetch 来获取它,或者看它是否在此处丢失或在 aws PutObject 调用中丢失。如果需要,我愿意使用 fetch 以外的东西来解决问题。
非常感谢任何帮助!
node.js - 使用 node-fetch 跳过等待时间
我使用node-fetch和Cheerio从漫画网站中获取数据。我只是使用一个简单的代码来显示正文 html,如下所示:
问题是这个页面使用了一个javascript代码,客户端需要等待5秒才能重定向到主页,所以在主页加载之前我无法抓取任何东西。
我怎样才能跳过这段时间并开始从页面中抓取数据。
谢谢你。
javascript - 只有在所有请求完成后,我才能调用函数?
我目前正在使用 npm 包生成一些请求,request
如下所示:
我只是不知道如何在toBeCalledWhenAllRequestsHaveFinished()
所有请求完成后才打电话。
应该做什么 ?
javascript - 在 Node 中发布 Web 登录表单
我request
用来发布一个login.php
带有参数的请求uid
and pwd
,然后node-fetch
用来读取 auth 后面的页面。
我console.log(body)
从该网站返回的是:
如果您的浏览器没有启用 javascript,请单击此处
当我从浏览器正常登录时会显示该消息。但是当我对用户配置文件进行后续提取时,它说我没有被授权。
这与request
contra有什么关系node-fetch
吗?
mocking - How do I stub a module with Jest and Proxyquire?
I want to force node-fetch
to be a stub and I'm having a bit of trouble
getting it to work. Code:
setup.js
:
package.json
:
Result:
How can it be failing to load the module that I just loaded 2 lines previous? Is proxyquire
not the right module to use here?
I've gotten node-fetch
to be a mock in my test but when I run the function in the module (which has const fetch = require('node-fetch');
at the top) it's going to the real module instead of the fake. I've tried using fetch mocking libs like fetch-mock
to no avail.
node.js - 将NodeJS流消耗到缓冲区并写入流的正确方法
我需要将可读流通过管道传输到缓冲区(要转换为字符串)和文件中。流来自node-fetch
.
NodeJS 流有两种状态:暂停和流动。据我了解,一旦'data'
附加了侦听器,流就会变为流动模式。我想确保我读取流的方式不会丢失任何字节。
方法1:管道和读取'data'
:
方法2:使用直通流:
是否需要第二种方法以免丢失数据?第二种方法是否浪费,因为可以缓冲另外两个流?或者,是否有另一种方法可以同时填充缓冲区和写入流?
javascript - Node.js 中基于 Promise 的业务级函数如何处理 Error 上返回的对象?
我需要创建一个名为“getLocationById”的业务级函数,它通过 REST API 从远程服务器检索一些数据。然后由路由器调用此函数以在网页上显示数据。
如果 fetch 调用成功,则 json 结果作为 Promise 返回。但是,如果 fetch 发现错误,例如远程服务器没有响应或响应 500 错误,应该向路由器返回什么?
此外,路由如何响应错误?
编辑:
在路由器中:
引发了以下错误:
上.then(r => res.send(r.json()))
进一步编辑:
然后我做了以下更改。
业务层
路由器端:
然后抛出了一个新错误:
我相信 fetch 函数返回了一个 Promise 对象,调用函数可以从路由中接收该对象?