0

我正在尝试通过 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 也没有。那么我将如何转换字符串编码以便我可以解析它呢?

谢谢

布迪达马万

4

1 回答 1

1

OpenWhisk 在基本映像中安装了少量 npm 模块(在此处记录)。

使用默认情况下不可用的 npm 包的解决方法是将 3rd 方依赖项捆绑到您的 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 回答