2016-04-20 9 views
0

Hallo, wenn ich versuche, meine sell.js zu laufen Javascript ubuntu ich diesen Fehler:Ausführen Js-Datei auf Ubuntu 14.04 VPS Fehler

node sell.js

socket timed out 
socket closed 
connecting to 72.165.61.175:27018 
connected 
encrypt request 

/var/www/bot/node_modules/steam/lib/steam_client.js:150 
    var cryptedSessKey = require('crypto').publicEncrypt(fs.readFileSync(__dirna 
             ^
TypeError: Object #<Object> has no method 'publicEncrypt' 
    at SteamClient.handlers.(anonymous function) (/var/www/bot/node_modules/steam/lib/steam_client.js:150:42) 
    at SteamClient._netMsgReceived (/var/www/bot/node_modules/steam/lib/steam_client.js:106:26) 
    at Connection.emit (events.js:95:17) 
    at Connection._readPacket (/var/www/bot/node_modules/steam/lib/connection.js:50:8) 
    at Connection.emit (events.js:92:17) 
    at emitReadable_ (_stream_readable.js:427:10) 
    at emitReadable (_stream_readable.js:423:5) 
    at readableAddChunk (_stream_readable.js:166:9) 
    at Connection.Readable.push (_stream_readable.js:128:10) 
    at TCP.onread (net.js:529:21) 

Code in dem Verzeichnis/var/www/bietet/node_modules/Dampf/lib/steam_client.js:

handlers[EMsg.ChannelEncryptRequest] = function(data) { 
    this._connection.setTimeout(0); 

    this.emit('debug', 'encrypt request'); 

    this._tempSessionKey = require('crypto').randomBytes(32); 
    var cryptedSessKey = require('crypto').publicEncrypt(fs.readFileSync(__dirname + '/public.pub'), this._tempSessionKey); 
    var keyCrc = require('buffer-crc32').signed(cryptedSessKey); 

    var encResp = new schema.MsgChannelEncryptResponse().encode(); 
    var body = new ByteBuffer(encResp.limit + 128 + 4 + 4, ByteBuffer.LITTLE_ENDIAN); 

    body.append(encResp); 
    body.append(cryptedSessKey); 
    body.writeInt32(keyCrc); 
    body.writeUint32(0); 

    this._send(EMsg.ChannelEncryptResponse, body.flip()); 
}; 

ich habe npm --save Krypto installieren, aber es funktioniert nicht ich diesen Fehler immer bin immer .. bitte, wenn jemand weiß, wie das mich zu beheben wissen lassen.

+0

installieren Sie bereits Build-Essentials in Ubuntu? Einige NPM-Pakete benötigen diese, um die Abhängigkeiten zu kompilieren. – manuerumx

+0

@manuerumx Ich habe es jetzt versucht, das Skript erneut auszuführen, aber der gleiche Fehler .. –

+0

Welche Version des Knotens verwenden Sie? Beachten Sie, dass Sie, wenn Sie den Knoten aus dem Ubuntu-Repository installiert haben, die alte Version 0.10 oder 0.12 haben. Diese Versionen verfügen nicht über die Funktion crypto.publicEncrypt. Sie müssen auf Branchs 4.x oder 5.x aktualisieren und dazu müssen Sie manuell installieren node.js – manuerumx

Antwort

0

Basierend auf Feedback und Tests, ist das Problem derzeit Ubuntu 14.04 Repositories haben den Knoten 0.10 Zweig. In diesem Zweig existiert die API-Funktion crypto.publicEncrypt nicht. Sie müssen die Versionen 4.x oder 5.x node.js installieren, um diese Funktionen nutzen zu können.

https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions

Für Node.js v4:

curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash - 
sudo apt-get install -y nodejs 

Alternativ für Node.js v5:

curl -sL https://deb.nodesource.com/setup_5.x | sudo -E bash - 
sudo apt-get install -y nodejs 

Optional: installieren Build-Tools

zu kompilieren und installiere native Addons fr om npm Sie müssen möglicherweise auch Build-Tools installieren:

sudo apt-get install -y build-essential