簡體   English   中英

未處理的承諾異常

[英]Unhandled Promise Exception

我是JavaScript和pubnub的新手。 我正在嘗試用JavaScript發布。 以下是我的代碼

const PubNub = require('pubnub')

const credentials = {
    publishKey   : 'pub-c-58dae4c4-4a11-4ff5-ad98-a69bf5c086bc',
    subscribeKey : 'sub-c-5d1ca66a-2308-11e9-b712-2656c4b29a42',
    secretKey    : 'sub-c-5d1ca66a-2308-11e9-b712-2656c4b29a42'
}

const CHANNEL = {
    TEST : 'TEST',
    TESTTWO : 'TESTTWO',
    BLOCKCHAIN : 'BLOCKCHAIN'
}

class PubSub {
    constructor(blockchain) {
        this.blockchain = blockchain;
        this.pubnub = new PubNub(credentials);
        this.pubnub.subscribe( { channel: [Object.values(CHANNEL)] });
        this.pubnub.addListener( this.listener())
    }

    listener() {    
        return {
            message: messageObject => {
                const { channel, message } = messageObject
                console.log("Message received on channel "+channel + ". Message is "+message);
                if (channel === CHANNEL.BLOCKCHAIN) {
                    this.blockchain.replaceChain(parsedMessage);
                }
            }
        }
publish( {channel, message}) {

        this.pubnub.publish( {channel, message });
    }

broadcastChain() {
        this.publish( { 
            channel: CHANNEL.BLOCKCHAIN,
            message: JSON.stringify(this.blockchain.chain)
            })
        }
}
module.exports = PubSub

我到這里來是未處理的諾言異常。 以下是錯誤日志:

(node:9456) UnhandledPromiseRejectionWarning: Error: Validation failed, check status for details
    at new PubNubError (C:\Users\sagardeshpande.deshp\test_cryptochain\node_modules\pubnub\lib\core\components\endpoint.js:134:112)
    at _class.exports.default (C:\Users\sagardeshpande.deshp\test_cryptochain\node_modules\pubnub\lib\core\components\endpoint.js:32:31)
    at PubSub.publish (C:\Users\sagardeshpande.deshp\test_cryptochain\pubnub.js:58:25)
    at PubSub.broadcastChain (C:\Users\sagardeshpande.deshp\test_cryptochain\pubnub.js:66:14)
    at Timeout.setTimeout [as _onTimeout] (C:\Users\sagardeshpande.deshp\test_cryptochain\index.js:10:26)
    at ontimeout (timers.js:436:11)
    at tryOnTimeout (timers.js:300:5)
    at listOnTimeout (timers.js:263:5)
    at Timer.processTimers (timers.js:223:10)
(node:9456) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:9456) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code

誰能幫忙嗎?

我相信它對您大吼大叫,因為它引發了錯誤並且您沒有發現它。

this.pubnub
  .publish( {channel, message })
    .then(result => {
      // you probably should handle this when successful?
    })
    .catch(error => {  // catch the errors
      console.log(error);
    });

我認為您的問題與PubNub沒有關系。 PubNub SDK的publish使用回調模式。 使用它來查看發布結果:

this.pubnub.publish( {channel, message }, function(status, response) {
    console.log('Publish Result: ', status, response)
});

如果您沒有看到記錄的PubNub錯誤,則問題可能與您的NPM配置有關。 如果是這種情況, UNABLE_TO_GET_ISSUER_CERT_LOCALLY在此處嘗試以下對UNABLE_TO_GET_ISSUER_CERT_LOCALLY答案: https : UNABLE_TO_GET_ISSUER_CERT_LOCALLY

如果尚未定義,則應嘗試定義parsedMessage

const parsedMessage = JSON.parse(message);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM