调试无服务器框架调用本地函数

时间:2017-02-07 09:07:42

标签: node.js debugging serverless-framework

我正在尝试调试sls调用本地。

我的设置:enter image description here

但是我一直在接受:

/Users/nikos/.nvm/versions/node/v6.9.1/bin/node --debug-brk=63417 --expose_debug_as=v8debug /Users/nikos/.nvm/versions/node/v6.9.1/bin/serverless invoke local -f createTodo
Debugger listening on [::]:63417

Process finished with exit code 130 (interrupted by signal 2: SIGINT)

4 个答案:

答案 0 :(得分:8)

好的,我已经找到了如何使用优秀的node --inspect真正的Chrome Devtools来实现这一目标。这比节点检查器好得多,因为它使用最新的内置chrome devtools。 (more info on node inspect)

node --debug-brk --inspect $(which serverless) invoke local -f myfunctionname

我跑了但是我的功能还没有加载(可能是无服务器代码中的一些延迟加载)。所以我在我的函数的顶行添加了一个debugger,一切似乎都很好。

在我的情况下,我还需要一些测试数据,所以我就这样通过了。

node --debug-brk --inspect $(which serverless) invoke local -f postprocess -d '{"Records":[{"eventVersion":"2.0","eventSource":"aws:s3","awsRegion":"us-east-1","eventTime":"2017-06-17T05:08:29.598Z","eventName":"ObjectCreated:Put","userIdentity":{"principalId":"ALS78N87ZDYNW"},"requestParameters":{"sourceIPAddress":"52.119.114.78"},"responseElements":{"x-amz-request-id":"2EB4FAD5892EC247","x-amz-id-2":"nVLasIYsWvWm7xwONiTB6z7L8oXKkvPOb9FntOYoG/kKS+PuWwbMJ1xM7n/C1X3NJh5FUCj4aEM="},"s3":{"s3SchemaVersion":"1.0","configurationId":"3c3b2a71-b639-4116-b246-08dcacd0c7d6","bucket":{"name":"simmer-uploads-test","ownerIdentity":{"principalId":"ALS78N87ZDYNW"},"arn":"arn:aws:s3:::simmer-uploads-test"},"object":{"key":"example+%285%29.zip","size":4757597,"eTag":"9aa90579ee4e8152e6dfa60258754a83","sequencer":"005944B94AD9307261"}}}]}'

我正在使用Mac,我听说在Windows上可能存在$(无服务器)的问题。但有人试一试,让我知道。

答案 1 :(得分:5)

我能够以一种方式设置我的 PHPStorm 调试器配置,现在我可以在本地逐步使用我的功能(使用 serverless-offline 插件)。

我正在使用Postman通过http请求触发功能。

请参阅以下步骤以实现此目的:

1。 Setup configuration for debugging serverless app offline in PHPStorm

2。 Console output after debugger started

3。 Sending request via Postman

4。 Be able to step through your function

答案 2 :(得分:2)

我已经在IntelliJ中使用它,所以它也应该在Webstorm中工作。您将需要无服务器离线插件(https://github.com/dherault/serverless-offline

在“运行配置”中,将“应用程序”参数更改为:

离线-s dev

并添加环境变量SLS_DEBUG = *

serverless-offline将启动IntelliJ Node调试器可以挂接的服务器。

答案 3 :(得分:0)

使用它,它模拟lambda和无服务器:

https://github.com/dherault/serverless-offline#debug-process