Tag: requestjs

asynchronous请求在node.js中的ForEach中

我是新的node.js(和request.js)。 我想从不同path的特定url获取网站正文(在http://www.example.com/path1下方的示例中, http://www.example.com/path2等) )并使用键/值映射(下面的siteData [path])将这些数据logging在一个对象中。 var request = require('request'), paths = ['path1','path2','path3'], siteData = {}, pathLength = paths.length, pathIndex = 0; paths.forEach((path) => { var url="http://www.example.com/"+path; request(url, function(error, response, html){ if(!error){ siteData[path] = response.body; pathIndex++; if(pathIndex===pathLength){ someFunction(siteData); } } }); function someFunction(data){ //manipulate data } 我的问题是: if语句(index ===长度)看起来不像是确定asynchronous请求是否完成的正确方法。 我该如何正确检查请求是否完成? 当我执行上面的代码时,我得到一个错误(node) warning: possible EventEmitter memory leak […]

Node.js和Requestjs:将一个Transformstream传递给Request.js作为上传文件

我正在使用node-archiver( https://github.com/archiverjs/node-archiver )在内存上创build一个zip文件。 使用存档器的pipe道function,我将所有内容都pipe理到一个转换stream。 如果需要,我可以将这个stream传给一个文件,但是我想让Request( https://github.com/request )读取这个stream,所以我不必去文件系统。 下面,我的转换stream被称为bridge 。 我没有做任何特殊的变换(我相信它也可能是一个PassThroughstream)。 var archive = archiver('zip'); archive.pipe(bridge); var r = request.post(url, function(err, res, body){ …. } var form = r.form(); form.append('token', <some token>); form.append('file', bridge, { "filename" : "package.zip", "contentType" : "application/zip" }); archive.append(<some string>, { "name": <some file name> }); archive.finalize(); 这不起作用(似乎file部分是空的)。 但是,如果我pipe道我的桥转换stream到一个文件写入stream – 并在stream完成后 – […]

request.js失败,其中CURL通过授权标头成功获取GET请求

我可以使用curl的Authorization头进行GET请求,但不能使用Node.js中的request或https进行request 。 服务器使用curl返回状态200,使用request或https返回500。 来自request或https request可能与curl不同? 服务器如何以不同的方式读取它们? 以下cURL从命令行成功执行: curl -H "Authorization: Bearer abc123def456" https://api.domain.com/path/to/resource 但同样的请求失败,在Node中的request.js var options = { type: 'get', url: "https://api.domain.com/path/to/resource", headers: { "Authorization": " Bearer abc123def456" } } request(options, function (err, response, body) { assert.equal(response.statusCode, 200) ; // 500 internal error }) 使用auth选项,request.js也失败了: var options = { type: 'get', url: "https://api.domain.com/path/to/resource", auth: { […]

即使已经解决,承诺也会挂起

我正在使用request-promise模块来检查网站是否与代理工作。 我试图find代理速度足以在5秒内回答。 因此,如果请求在5秒内没有超时,我只添加对象。 对于某些代理,即使承诺解决,节点脚本暂停一段时间。 我找不到拖延的原因。 我看到它打印Done但它挂起。 1分10秒后,脚本退出。 这是挂起由于我的代码,或操作系统问题打开套接字等? const rp = require('request-promise'); const testProxies = [ { "ipAddress": "80.241.219.83", "port": 3128, }, { "ipAddress": "45.55.27.246", "port": 80 }, { "ipAddress": "144.217.197.71", "port": 8080, }, { "ipAddress": "104.131.168.255", "port": 80, }, ]; function CheckSites(sitesArray,site) { let ps = []; for (let i = 0; i < […]

Node.JS请求 – 无效的URI“/”

我在我的应用程序中使用request通过使用客户端身份validation的HTTPS发送POST请求。 请求总是抛出一个错误Error: Invalid URI "/" ,我无法做任何事情来解决它。 我已经尝试使用url.parse而不是传递一个string,但它仍然是相同的。 request.post({ uri: 'https://localhost:5000', key: credentials.key, ca: credentials.ca, cert: credentials.cert, passphrase: credentials.passphrase, rejectUnauthorized: false }, { form: { data: payload }});

从nodejs请求到s3的stream响应

你如何使用请求下载一个文件的内容,并直接使用aws-sdk作为节点将其传输到s3? 下面的代码给我的Object #<Request> has no method 'read' ,这使得它看起来像请求不会返回一个可读的stream… var req = require('request'); var s3 = new AWS.S3({params: {Bucket: myBucket, Key: s3Key}}); var imageStream = req.get(url) .on('response', function (response) { if (200 == response.statusCode) { //imageStream should be read()able by now right? s3.upload({Body: imageStream, ACL: "public-read", CacheControl: 5184000}, function (err, data) { //2 months console.log(err,data); }); […]

在AJAX调用(使用ExpressJS)之后,通过EJS模板中的数组循环的正确方法是什么?

所以我试图循环通过一个http调用使用request模块/包使用我的内部API的对象数组。 到目前为止,我能够从API中获取数据,并在页面上显示完整的对象。 我想将其显示在我的页面上,并使用EJS模板系统进行循环。 我知道我可以使用AngularJS作为前端的东西,但我想看看我只能在服务器端使用多远。 所以下面是我的代码: server.js // Prepend /api to my apiRoutes app.use('/api', require('./app/api')); api.js var Report = require('./models/report'); var express = require('express'); var apiRoutes = express.Router(); apiRoutes.route('/reports', isLoggedIn) .get(function (req, res,next) { // use mongoose to get all reports in the database Report.find(function (err, reports) { // if there is an error retrieving, send […]