2017-10-28 4 views
0
const express = require('express'); 
const cors = require('cors'); 
const massive = require('massive'); 
const bodyParser = require('body-parser'); 
const config = require('../config'); 

const app = express(); 

app.use(bodyParser.json()); 

//massive connection string to database 

massive(config.dblink).then(db => { 
    app.set('db', db) 

    app.get('db').seed_file().then(res => { 
     console.log(res) 
    }) 
}).catch(err => { 
    console.log(err) 
}); 

const port = 3001; 
app.listen(port,() => {console.log(`the server is listening on ${port}`)}) 

ich die folgende Störung erhalte:Ich erhalte eine Unhandle Versprechen Ablehnung Fehler kann aber nicht herausfinden, warum

(node:173676) UnhandledPromiseRejectionWarning: Unhandled promise rejection 
(rejection id: 2): error: syntax error at or near "{"           
(node:173676) [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. 

Ich habe nicht in der Lage gewesen, um herauszufinden, was falsch ist. Ich habe mehrere verschiedene Beispiele angeschaut, kann aber das Problem nicht sehen. Ich habe eine .catch nach meinem seed_file Versprechen.

Irgendwelche Gedanken?

+0

direkt unter 'console.log (res)' Sie eine zusätzliche haben '})'. Löschen Sie das und Sie sollten gut sein –

+0

@MarkDodds das ist nicht der Fall, nur der Code ist nicht gut formatiert – codtex

Antwort

4

I'm getting an Unhandled Promise Rejection error but can't figure out why

Sie erhalten diese Warnung, weil Sie unhandled Versprechen Ablehnung :) haben. Die äußere catch() Methode ist der Umgang mit nicht verschachtelten Versprechen Ablehnungen, so zwei Möglichkeiten sein könnte:

1) Verwenden Rückkehr auf verschachtelte Versprechen, und es wird von der äußeren catch() gefangen werden:

massive(config.dblink).then(db => { 
    app.set('db', db) 
    return app.get('db').seed_file().then(res => { 
     console.log(res) 
    }); 
}).catch(err => console.log(err) }); 

2) Verwenden inneren catch() zu unterschiedlich die nested Abstoßungs Griff:

massive(config.dblink).then(db => { 
    app.set('db', db) 
    app.get('db').seed_file().then(res => { 
     console.log(res) 
    }).catch(err => console.log(err) }); 
}).catch(err => console.log(err) }); 

Demonstration:

function doPromise(someText, flag) { 
 
    return new Promise(function(resolve, reject) { 
 
    setTimeout(function() { 
 
     flag ? resolve(someText) : reject(someText); 
 
    }, 500); 
 
    }); 
 
} 
 

 
/* The following sample demostrates unhandled rejection */ 
 
doPromise('this will resolve', true).then(function(res1) { 
 
    console.log(res1); 
 
    doPromise('this is unhandled promise rejection', false).then(function(res2) { 
 
    console.log(res2); 
 
    }); 
 
}); 
 

 
/* The following sample demostrates handling nested promise rejection like explained in point 1) */ 
 
doPromise('1) this will resolve', true).then(function(res1) { 
 
    console.log(res1); 
 
    return doPromise('1) nested rejection catched from outside', false); 
 
}).catch(err => console.log(err)); 
 

 

 
/* The following sample demostrates handling nested promise rejection like explained in point 2) */ 
 
doPromise('2) this will resolve', true).then(function(res1) { 
 
    console.log(res1); 
 
    doPromise('2) nested rejection catched from inside', false).catch(err => console.log(err)); 
 
}).catch(err => console.log(err));

Verwandte Themen