在 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
我正在尝试通过 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