Unbehandelte Ablehnung TypeError, wenn Sie versuchen zu promisify ein node-mysql-Verbindung und Abfrage

Ich bin versucht, bluebird ist promisify mit der node-mysql Paket. Knoten version 4.2.4

var Promise = require('bluebird');
var mysqlClient = Promise.promisifyAll(require("mysql/lib/Connection").prototype);
Promise.promisifyAll(require("mysql/lib/Pool").prototype);

var connectionOptions = ({
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'my_db'

});

var firstPost = "some sql here";

var results = [];
mysqlClient.connectAsync(connectionOptions).then(function(connection){
    connection.query(firstPost, function(){
        console.log('i reached line 26 of a node script. a minor miracle')

    });
}).catch(function(err) {
  console.log(err);
});

Bekomme ich die Fehlermeldung

[TypeError: Cannot read property ’socketPath‘ undefined]

Stack trace:

Unhandled rejection TypeError: Cannot read property 'socketPath' of undefined
    at Connection.connect (/vagrant/spam_smasher/node_modules/mysql/lib/Connection.js:87:32)
    at Connection.tryCatcher (/vagrant/spam_smasher/node_modules/bluebird/js/release/util.js:11:23)
    at Connection.ret [as connectAsync] (eval at <anonymous> (/vagrant/spam_smasher/node_modules/bluebird/js/release/promisify.js:184:12), <anonymous>:13:39)
    at Object.<anonymous> (/vagrant/spam_smasher/bluebird.js:24:13)
    at Module._compile (module.js:435:26)
    at Object.Module._extensions..js (module.js:442:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:313:12)
    at Function.Module.runMain (module.js:467:10)
    at startup (node.js:136:18)
    at node.js:963:3

Warum bin ich immer diese Fehlermeldung und/oder wie könnte ich das Debuggen weiter? Ich habe versucht remote zu Debuggen, aber ich bin nicht sicher, was ich Suche, wenn ich ein paar Schritte auf der prototype chain. Die Async Funktionen erscheinen angebracht werden, um die MysqlClient Objekt.

Entfernten Debuggen zeigt, dass der folgende Abschnitt in der node-mysql ist Connection.js Datei wirft den Fehler :

 if (!this._connectCalled) {
    this._connectCalled = true;

    //Connect either via a UNIX domain socket or a TCP socket.
    this._socket = (this.config.socketPath)
      ? Net.createConnection(this.config.socketPath)
      : Net.createConnection(this.config.port, this.config.host);

socketpath ist nicht etwas, das Sie brauchen, um zu definieren, bei der Verwendung von node-mysql direkt

  • Zeigen uns die umliegenden code (was ist this.config)?
  • Vielen Dank für Ihre Antwort. Die config-code ist hier, wenn Sie interessiert sind github.com/felixge/node-mysql/blob/master/lib/…, aber ich bin den Verzicht auf dieses problem wie pro meine Antwort
InformationsquelleAutor codecowboy | 2016-01-20



One Reply
  1. 0

    Scheint es, dass die Bluebird docs veraltet sind. Sie vermissen, dass müssen Sie auch ConnectionConfig verfügbar sein und so diese fehlten in meinem code den Fehler verursacht.

    Wählte ich aufgeben, dieses problem zu bewahren, meine geistige Gesundheit. Es ist eine weitere Diskussion hier und Sie können auch prüfen wollen, mysql-Versprechen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.