Node.js UnhandledPromiseRejection:TypeError:无法读取未定义的属性“符号”
Posted
技术标签:
【中文标题】Node.js UnhandledPromiseRejection:TypeError:无法读取未定义的属性“符号”【英文标题】:Node.js UnhandledPromiseRejection: TypeError: Cannot read property 'sign' of undefined 【发布时间】:2018-03-18 01:37:21 【问题描述】:tran.js
var CoinStack = require('coinstack-sdk-js')
var coinstackclient = new CoinStack('YOUR_COINSTACK_ACCESS_KEY',
'YOUR_COINSTACK_SECRET_KEY'); // Actual keys not shown
var privateKeyWIF = CoinStack.ECKey.createKey(); //개인키 생성
var txBuilder = coinstackclient.createTransactionBuilder();
txBuilder.addOutput("1Q8xE8T3G9mxRoDUde6gDSxnK1uCac2kqh",
CoinStack.Math.toSatoshi("0.01"))
txBuilder.setInput("1Q8xE8T3G9mxRoDUde6gDSxnK1uCac2kqh");
txBuilder.buildTransaction(function(err, tx)
tx.sign(privateKeyWIF)
var rawTx = tx.serialize()
// send tx
client.sendTransaction(rawTx, function(err)
if (null != err)
console.log("failed to send tx");
);
);
错误
(node:12012) UnhandledPromiseRejectionWarning: 未处理的承诺拒绝 (拒绝 id:1):TypeError:无法读取未定义的属性“符号” (节点:12012)[DEP0018] DeprecationWarning:未处理的承诺拒绝是 已弃用。将来,未处理的 Promise 拒绝将 使用非零退出代码终止 Node.js 进程。
我不知道该怎么办
【问题讨论】:
【参考方案1】:txBuilder.buildTransaction()
很可能会失败,而且回调函数中的 tx
参数确实不是预期的对象。
您应该在使用tx
之前检查错误,如下所示:
txBuilder.buildTransaction(function(err, tx)
if (err)
// output err or do something with it
console.log('failed to build transaction');
console.log(err);
// stop here.
return;
tx.sign(privateKeyWIF)
var rawTx = tx.serialize();
// send tx
client.sendTransaction(rawTx, function(err)
if (err)
console.log("failed to send tx");
);
);
【讨论】:
【参考方案2】:检查tx
是否不是null
或undefined
,然后为ex
调用其函数,例如if (ex != null && ex.sign) ...
【讨论】:
【参考方案3】:回调的第二个参数“tx”很可能是未定义的。
【讨论】:
以上是关于Node.js UnhandledPromiseRejection:TypeError:无法读取未定义的属性“符号”的主要内容,如果未能解决你的问题,请参考以下文章