2016-06-17 7 views
0

Ich versuche, ein Nicht-ASCII-Zeichen von einer Webseite aus einer OpenWhisk-Aktion in Bluemix zu lesen. Ich verwende den folgenden Code-Schnipsel:Verwendung von iconv in OpenWhisk Bluemix

function main(params) { 
    var request = require('request'); 
    var iconv = require('iconv-lite'); 
    request({ method: 'GET' 
    , uri: params.url , encoding: null 
    }, function(error, response, data) { 
     var raw = ""; 
     raw = iconv.decode(buffer(data),"ISO-8859-1"); 

     return whisk.done({"raw": raw}); 
    }); 
    return whisk.async(); 
} 

Das Modul iconv nicht gefunden wird, ebenso wenig wie Knoten-iconv oder iconv-lite. Also, wie würde ich die String-Codierung konvertieren, damit ich es analysieren kann?

Danke

Budi Darmawan

Antwort

1

OpenWhisk eine kleine Anzahl von NPM-Module im Basisbild installiert (die here dokumentiert ist).

Eine Problemumgehung für die Verwendung eines npm-Pakets, das nicht standardmäßig verfügbar ist, besteht darin, Abhängigkeiten von Drittanbietern in Ihre JavaScript-Aktion zu integrieren. Dieser Leitfaden bietet eine Möglichkeit, es mit einem webpack zu tun: https://developer.ibm.com/openwhisk/2016/03/17/bundling-openwhisk-actions-with-webpack/

Ich schlage vor, ein Problem/Feature-Requests zu erstellen ‚iconv-lite‘ zu OpenWhisk hinzufügen - Da nur diese encodings sind standardmäßig in der node.js Laufzeit verfügbar .

Eine andere Lösung, wenn Sie bereit sind, eine lokale OpenWhisk Bereitstellung ausführen können, ist das Paket in diesem Dockerfile für Node.js V6.2.0 oder diese Dockerfile für Node.js v0.12.14 hinzuzufügen.

Zuletzt noch einmal anmerken, dass es derzeit eine Einschränkung gibt, die verhindert, dass Nicht-ASCII-Zeichen in Aktionsergebnissen (und Protokollen) korrekt serialisiert und deserialisiert werden. Siehe diese Ausgabe als Referenz: https://github.com/openwhisk/openwhisk/issues/252

Verwandte Themen