mirror of
https://github.com/serverless/serverless.git
synced 2026-01-18 14:58:43 +00:00
81 lines
2.1 KiB
Markdown
81 lines
2.1 KiB
Markdown
<!--
|
|
title: Serverless Framework - Fn Guide - Debugging
|
|
menuText: Debugging
|
|
menuOrder: 8
|
|
description: Recommendations and best practices for debugging Fn Functions with the Serverless Framework
|
|
layout: Doc
|
|
-->
|
|
|
|
<!-- DOCS-SITE-LINK:START automatically generated -->
|
|
|
|
### [Read this on the main serverless docs site](https://www.serverless.com/framework/docs/providers/fn/guide/debugging)
|
|
|
|
<!-- DOCS-SITE-LINK:END -->
|
|
|
|
# Fn - Debugging
|
|
|
|
How can we debug errors in our Fn functions?
|
|
|
|
Let's imagine that we have deployed the following Nodejs code as a Fn function using Serverless:
|
|
|
|
```javascript
|
|
const fdk = require('@fnproject/fdk');
|
|
|
|
fdk.handle(input => {
|
|
input = JSON.parse(input);
|
|
let name = 'World';
|
|
if (input.name) {
|
|
name = input.name;
|
|
}
|
|
const response = { message: `Hello ${name}` };
|
|
console.error(`I show up in the logs name was: ${name}`);
|
|
return response;
|
|
});
|
|
```
|
|
|
|
And its corresponding Serverless YAML file:
|
|
|
|
```yml
|
|
service:
|
|
name: hello-world
|
|
|
|
provider:
|
|
name: fn
|
|
|
|
plugins:
|
|
- serverless-fn
|
|
functions:
|
|
hello:
|
|
name: hello
|
|
version: 0.0.1
|
|
runtime: node
|
|
format: json
|
|
events:
|
|
- http:
|
|
path: /hello
|
|
```
|
|
|
|
Let's invoke correctly that function
|
|
|
|
```
|
|
serverless invoke --function hello --data '{"name":"Bob"}' -l
|
|
|
|
# Output
|
|
Serverless: Calling Function: hello
|
|
{ message: 'Hello Bob' }
|
|
I show up in the logs name was: Bob
|
|
```
|
|
|
|
If we were to call the above function with an incorrect json data you would get `Hello World` back instead of `Hello Bob`
|
|
In order to debug this since there is nothing fatal happening and no stack trace is appearing in the logs you would need to
|
|
add more console.error calls until you figure it out. If there were a major error
|
|
that caused a stacktrace and the entire function to fail then you could easily call
|
|
|
|
```
|
|
serverless logs --function hello
|
|
```
|
|
|
|
That would print any stack traces that may have gone to stderr
|
|
|
|
This is a very basic example of debugging a Fn function, but it should hopefully highlight the basic principles. Obviously, in production environments, you would want to have more formal and sophisticated error handling built into your code.
|