0

Bluemix の OpenWhisk アクションから、Web ページから非 ASCII 文字を読み取ろうとしています。次のコード スニペットを使用します。

 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();
 } 

モジュール iconv が見つかりません。node-iconv または iconv-lite も見つかりません。では、文字列エンコーディングを解析できるように変換するにはどうすればよいでしょうか?

ありがとうございました

ブディ・ダルマワン

4

1 に答える 1

1

OpenWhisk は、少数の npm モジュールをベース イメージにインストールします (これについては、こちらに記載されています)。

デフォルトでは利用できない npm パッケージを使用する回避策は、サードパーティの依存関係を JavaScript アクションにバンドルすることです。このガイドでは、Webpack を使用してそれを行う方法を説明しています: https://developer.ibm.com/openwhisk/2016/03/17/bundling-openwhisk-actions-with-webpack/

「iconv-lite」を OpenWhisk に追加するための問題/機能リクエストを作成することをお勧めします - これらのエンコーディングのみが node.js ランタイムでデフォルトで使用可能であるためです。

ローカルの OpenWhisk デプロイメントを実行する場合の別の回避策は、このDockerfile for Node.js v6.2.0 またはこのDockerfile for Node.js v0.12.14 にパッケージを追加することです。

最後に参考までに、現在、非 ASCII 文字がアクションの結果 (およびログ) で正しくシリアル化および逆シリアル化されないようにする制限があることに注意してください。参照用にこの問題を参照してください: https://github.com/openwhisk/openwhisk/issues/252

于 2016-06-17T18:55:45.200 に答える