为什么“main”在我的OpenWhisk操作中不起作用?

时间:2018-01-28 16:18:19

标签: node.js ibm-cloud serverless openwhisk

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

  

“初始化失败的原因是:操作入口点'main'不是a   功能“。

但我很确定“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.";
}

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

1 个答案:

答案 0 :(得分: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;

的package.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
}