1

我正在尝试将压缩操作上传到 IBM 的 OpenWhisk。

“初始化失败,原因是:动作入口点'main'不是函数。”

但我很确定“main”是一个函数,并且我尝试过以多种方式定义它。正如教程所建议的,我两种都试过了:

function processComment(params) {
    // some code
    return {success:1};
}
exports.main = processComment;

function main(params) {
    // some code
    return {success:1};
}

这段代码都包含在一个名为 index.js 的文件中,我在 package.json 中尝试了使用和不使用以下行:

"main": "index.js",

我什至在 OpenWhisk 中查找了相关代码,这似乎是一个简单的类型检查,以查看 main 是否是一个函数:

if (typeof thisRunner.userScriptMain !== 'function') {
    throw "Action entrypoint '" + message.main + "' is not a function.";
}

所以我认为它只是没有在正确的地方找到“主要”......但我真的迷路了。有人可以帮帮我吗?

4

1 回答 1

2

您使用的是 zip 文件吗?如果没有,您已经达到了当前 node.js 运行时的限制,如本期https://github.com/apache/incubator-openwhisk-runtime-nodejs/issues/14中所述,它需要一个压缩的源文件。

如果您使用的是 zip,您是否将 package.json 和 index.js 文件放在根路径中?

作为 zip 文件:

index.js:

function processComment(params) {
    // some code
    return {success:1};
}
exports.main = processComment;

包.json:

{
  "name": "my-action",
  "main": "index.js"
}

并使用 CLI:

$ zip s.zip index.js package.json
$ wsk action create s s.zip --kind nodejs:6
$ wsk action invoke s -r
{
    "success": 1
}
于 2018-01-28T16:40:27.073 回答