let nasPath = "";
return getFamInfo(args.familyID)
.then(function (famInfo) {
nasPath = //some code involving famInfo here
return getSFTPConnection(config.nasSettings);
}).then(function (sftp) {
const fastPutProm = Promise.promisify(sftp.fastPut);
return fastPutProm(config.jpgDirectory, nasPath, {});
});
如果我在const fastPutProm = Promise.promisify(sftp.fastPut);
之后放置一个断点,fastPutProm
是一个带有三个参数的函数。但是当我尝试运行此代码时,出现TypeError: Cannot read property 'fastPut' of undefined
错误。我在这里做错了什么?
答案 0 :(得分:4)
该错误表示您的sftp
值为undefined
,因此当您尝试将sftp.fastPut
传递给promisify()
方法时,会因为您的原因而生成错误试图引用undefined.fastPut
TypeError
。{/ p>
因此,解决方案是备份几个步骤,找出sftp
为什么没有所需值的原因。
另一种可能性是错误来自模块内部,因为sftp.fastPut
的实现引用了this
,它预期为sftp
。你的宣传方法并没有保留this
的价值。您可以通过将代码更改为:
const fastPutProm = Promise.promisify(sftp.fastPut, {context: sftp});