在 Bluemix 的 OpenWhisk 中使用 iconv

Using iconv in Bluemix's OpenWhisk

我正在尝试通过 Bluemix 中的 OpenWhisk 操作从网页中读取非 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 也未找到。 那么如何转换字符串编码以便我可以解析它呢?

谢谢

布迪达尔马万

OpenWhisk 在基础映像中安装少量 npm 模块(已记录 here)。

使用默认情况下不可用的 npm 包的解决方法是将第 3 方依赖项捆绑到您的 javascript 操作中。本指南提供了一种使用 webpack 来完成此操作的方法: https://developer.ibm.com/openwhisk/2016/03/17/bundling-openwhisk-actions-with-webpack/

我建议创建一个 issue/feature 请求以将 'iconv-lite' 添加到 OpenWhisk - 因为默认情况下只有这些 encodings 在 node.js 运行 时间可用.

如果您愿意 运行 本地 OpenWhisk 部署,另一种解决方法是在此 Dockerfile for Node.js v6.2.0 or this Dockerfile 中为 Node.js v0.12.14.

添加包

最后,仅供参考,请注意,当前存在一个限制,可防止非 ASCII 字符在操作结果(和日志)中正确序列化和反序列化。参考这个问题:https://github.com/openwhisk/openwhisk/issues/252