无服务器框架TypeError:e不是函数

阿努伊(Anuj)TBE

serverless-framework用来安排AWS中的任务。

我的应用程序结构是

|- src
   |- tasks
      |- analytics.task.js
|- tasks.js
|- serverless.yml

内容 analytics.task.js

module.exports.run = (event, context, callback) => {
    console.log('Getting data...');

    console.log('success');
};

从运行方法中删除了所有其他代码以进行测试。

内容 tasks.js

const analyticsTask = require('./src/tasks/analytics.task');

module.exports.analytics = analyticsTask.run();

和内容 serverless.yml

functions:
  analyticsDataProcess:
    handler: tasks.analytics
    description: 'Send analytics data to the backend server'
    events:
      - schedule:
          name: analytics-data-process-task
          description: 'Send analytics data every minute'
          rate: rate(1 minute)
          enabled: true

但是当运行任务时,它给出了一个错误

{
    "errorMessage": "e is not a function",
    "errorType": "TypeError",
    "stackTrace": [
        "TypeError: e is not a function",
        "    at /home/user/code/user/qcg-app/serverless_sdk/index.js:9:88073",
        "    at resolve (/home/user/.nvm/versions/node/v10.15.3/lib/node_modules/serverless/lib/plugins/aws/invokeLocal/index.js:692:30)",
        "    at Promise._execute (/home/user/.nvm/versions/node/v10.15.3/lib/node_modules/serverless/node_modules/bluebird/js/release/debuggability.js:411:9)",
        "    at Promise._resolveFromExecutor (/home/user/.nvm/versions/node/v10.15.3/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:518:18)",
        "    at new Promise (/home/user/.nvm/versions/node/v10.15.3/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:103:10)",
        "    at AwsInvokeLocal.invokeLocalNodeJs (/home/user/.nvm/versions/node/v10.15.3/lib/node_modules/serverless/lib/plugins/aws/invokeLocal/index.js:645:12)",
        "    at AwsInvokeLocal.invokeLocal (/home/user/.nvm/versions/node/v10.15.3/lib/node_modules/serverless/lib/plugins/aws/invokeLocal/index.js:155:19)",
        "    at AwsInvokeLocal.tryCatcher (/home/user/.nvm/versions/node/v10.15.3/lib/node_modules/serverless/node_modules/bluebird/js/release/util.js:16:23)",
        "    at Promise._settlePromiseFromHandler (/home/user/.nvm/versions/node/v10.15.3/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:547:31)",
        "    at Promise._settlePromise (/home/user/.nvm/versions/node/v10.15.3/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:604:18)",
        "    at Promise._settlePromiseCtx (/home/user/.nvm/versions/node/v10.15.3/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:641:10)",
        "    at _drainQueueStep (/home/user/.nvm/versions/node/v10.15.3/lib/node_modules/serverless/node_modules/bluebird/js/release/async.js:97:12)",
        "    at _drainQueue (/home/user/.nvm/versions/node/v10.15.3/lib/node_modules/serverless/node_modules/bluebird/js/release/async.js:86:9)",
        "    at Async._drainQueues (/home/user/.nvm/versions/node/v10.15.3/lib/node_modules/serverless/node_modules/bluebird/js/release/async.js:102:5)",
        "    at Immediate.Async.drainQueues [as _onImmediate] (/home/user/.nvm/versions/node/v10.15.3/lib/node_modules/serverless/node_modules/bluebird/js/release/async.js:15:14)",
        "    at runCallback (timers.js:705:18)",
        "    at tryOnImmediate (timers.js:676:5)",
        "    at processImmediate (timers.js:658:5)",
        "    at process.topLevelDomainCallback (domain.js:120:23)"
    ]
}
亚伦·斯图文伯格

好吧,似乎这里发生了一些事情。

首先,期望您的处理程序返回一个可以由lambda调用的函数。在这种情况下,您将调用处理程序,而不是返回要由lambda调用的函数。

为了解决这个问题,去掉括号后runtask.js

const analyticsTask = require('./src/tasks/analytics.task');

module.exports.analytics = analyticsTask.run;

还有另一个问题-lambda处理程序需要是异步函数。所以你需要添加async在导出的函数的前面runanalytics.task.js现在您可以删除回调参数。另一种方法是忽略异步,但实际上调用回调。由于我们倾向于使用较新的节点语法,因此我们删除回调arg以支持异步。

module.exports.run = async (event, context) => {
    console.log('Getting data...');

    console.log('success');
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无服务器框架最佳实践

来自分类Dev

无服务器框架输出

来自分类Dev

使用无服务器框架,如何替换认知用户池而不是更新?

来自分类Dev

如何引用使用无服务器框架创建的Arn和AWS lambda函数的名称

来自分类Dev

如何在无服务器框架中将托管策略附加到lambda函数

来自分类Dev

无服务器框架:无服务器错误功能未找到:

来自分类Dev

无服务器类型错误:粉笔(...)昏暗的不是一个函数

来自分类Dev

AWS无服务器功能:无法访问aws-sdk对象的方法...“不是函数”

来自分类Dev

AWS无服务器框架使用GIT进行协作

来自分类Dev

无服务器框架Postgresql版本升级问题

来自分类Dev

带有节点MySQL的无服务器框架

来自分类Dev

无服务器框架Python lambda直接返回JSON

来自分类Dev

无服务器框架lambda执行角色不匹配?

来自分类Dev

使用无服务器框架模拟响应数据

来自分类Dev

在无服务器框架中使用路径参数

来自分类Dev

无服务器框架-无法识别的属性“参数”

来自分类Dev

无服务器框架Postgresql版本升级问题

来自分类Dev

AWS无服务器框架使用GIT进行协作

来自分类Dev

如何在无服务器框架中使用 jquery?

来自分类Dev

无服务器框架 S3 事件规则

来自分类Dev

具有DynamoDB的无服务器框架:Lambda函数有效,但数据尚未保存到DynamoDB

来自分类Dev

如何使用无服务器框架通过AWS Lambda函数环境变量访问SSM参数存储值?

来自分类Dev

如何将端点路径设置为我的Google Cloud函数(使用无服务器框架)

来自分类Dev

ember-cli -TypeError:运行ember服务器后,undefined不是函数

来自分类Dev

如何使用无服务器框架在AWS Aurora无服务器中自动创建表

来自分类Dev

lambda 函数如何在无服务器中工作?

来自分类Dev

在无服务器中手动创建角色而不是无服务器创建角色

来自分类Dev

如何在无服务器框架中配置多个Cognito触发器?

来自分类Dev

无服务器框架 AWS 跨账户自定义授权器

Related 相关文章

  1. 1

    无服务器框架最佳实践

  2. 2

    无服务器框架输出

  3. 3

    使用无服务器框架,如何替换认知用户池而不是更新?

  4. 4

    如何引用使用无服务器框架创建的Arn和AWS lambda函数的名称

  5. 5

    如何在无服务器框架中将托管策略附加到lambda函数

  6. 6

    无服务器框架:无服务器错误功能未找到:

  7. 7

    无服务器类型错误:粉笔(...)昏暗的不是一个函数

  8. 8

    AWS无服务器功能:无法访问aws-sdk对象的方法...“不是函数”

  9. 9

    AWS无服务器框架使用GIT进行协作

  10. 10

    无服务器框架Postgresql版本升级问题

  11. 11

    带有节点MySQL的无服务器框架

  12. 12

    无服务器框架Python lambda直接返回JSON

  13. 13

    无服务器框架lambda执行角色不匹配?

  14. 14

    使用无服务器框架模拟响应数据

  15. 15

    在无服务器框架中使用路径参数

  16. 16

    无服务器框架-无法识别的属性“参数”

  17. 17

    无服务器框架Postgresql版本升级问题

  18. 18

    AWS无服务器框架使用GIT进行协作

  19. 19

    如何在无服务器框架中使用 jquery?

  20. 20

    无服务器框架 S3 事件规则

  21. 21

    具有DynamoDB的无服务器框架:Lambda函数有效,但数据尚未保存到DynamoDB

  22. 22

    如何使用无服务器框架通过AWS Lambda函数环境变量访问SSM参数存储值?

  23. 23

    如何将端点路径设置为我的Google Cloud函数(使用无服务器框架)

  24. 24

    ember-cli -TypeError:运行ember服务器后,undefined不是函数

  25. 25

    如何使用无服务器框架在AWS Aurora无服务器中自动创建表

  26. 26

    lambda 函数如何在无服务器中工作?

  27. 27

    在无服务器中手动创建角色而不是无服务器创建角色

  28. 28

    如何在无服务器框架中配置多个Cognito触发器?

  29. 29

    无服务器框架 AWS 跨账户自定义授权器

热门标签

归档