javascript - 查看函数的定义位置

标签 javascript node.js amazon-web-services amazon-s3 proxyquire

如何查看此函数的位置:http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#copyObject-property

copyObject(params = {}, callback) ⇒ AWS.Request

已定义?

我尝试过的:

var AWS = require('aws-sdk');
AWS.S3.prototype.copyObject
=> undefined

但是这是未定义

我想知道它,因为我想用 proxyquire 来 stub 这个函数:

 var aws_stub = {};
 var Mover =  proxyquire('../../callback/mover',
                         {'aws-sdk': aws_stub}
                         ).Mover;

 var fake_aws_copyObject = function(params, func){func(null, "succeed")};
     fake_aws_copyObject_stub = sinon.spy(fake_aws_copyObject);
     aws_stub.AWS.S3 ... ??   = fake_aws_copyObject_stub; 

最佳答案

它特定于您选择使用的 API 版本,因此您必须首先创建服务的新实例 var s3 = new AWS.S3();

您可以在描述 API 的文件中的某处找到生成服务的定义:aws-sdk/apis/s3-2006-03-01.min.json

apis 中的 API 文件加载到 lib/api_loader.js 中。

您可以在 lib/service.js 中看到它们实际上已添加到原型(prototype)中,但这仅在您创建服务的新实例后才会发生:

/**
 * Adds one method for each operation described in the api configuration
 *
 * @api private
 */
 defineMethods: function defineMethods(svc) {
     AWS.util.each(svc.prototype.api.operations, function iterator(method) {
         if (svc.prototype[method]) return;
         svc.prototype[method] = function (params, callback) {
             return this.makeRequest(method, params, callback);
         };
     });
 }

关于javascript - 查看函数的定义位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31117572/

相关文章:

amazon-web-services - aws递归上传文件,除了已经上传的文件

javascript - 在 Chrome DevTools 中重定向后立即停止 JavaScript 代码执行

javascript - Chrome 中是否模拟了 MozScrolledAreaChanged 事件?

javascript - 如何测试一个字符串是否是另一个字符串的最后一个 “part”?

javascript - 脚本和 setTimeout/setInterval 如何在 NodeJS 中协同工作?

node.js - Nodester Node 版本错误

javascript - 错误 : Error parsing url: undefined when migrating database to heroku

node.js - 在 Azure Web App 上的 iisnode 上运行 Next.js 时出现问题

amazon-web-services - 用于在 AWS 中轮换 key 的 Secrets Manager VPC 端点的替代方案

postgresql - PostgreSQL Amazon RDS 上的 Londiste3 和 pglogic 复制