docs/Reference/Warnings.md
Table of contents
Fastify uses the Node.js warning event
API to notify users of deprecated features and coding mistakes. Fastify's
warnings are recognizable by the FSTWRN and FSTDEP prefixes. When
encountering such a warning, it is highly recommended to determine the cause
using the --trace-warnings
and --trace-deprecation
flags. These produce stack traces pointing to where the issue occurs in the
application's code. Issues opened about warnings without this information will
be closed.
Warnings can also be disabled, though it is not recommended. If necessary, use one of the following methods:
NODE_NO_WARNINGS environment variable to 1--no-warnings flag to the node processno-warnings in the NODE_OPTIONS environment variable--disable-warning=FSTWRN004 to disable a specific warningFor more information on disabling warnings, see Node's documentation.
Disabling warnings is not recommended and may cause unexpected behavior.
| Code | Description | How to solve | Discussion |
|---|---|---|---|
| <a id="FSTWRN001">FSTWRN001</a> | The specified schema for a route is missing. This may indicate the schema is not well specified. | Check the schema for the route. | #4647 |
| <a id="FSTWRN003">FSTWRN003</a> | The %s plugin mixes async and callback styles, which may lead to unhandled rejections. | Do not mix async and callback style. | #6011 |
| <a id="FSTWRN004">FSTWRN004</a> | An errorHandler is being overridden in the same scope, which can lead to subtle bugs. | Avoid calling setErrorHandler more than once in the same scope. For more information, see Server documentation. | #6104 |
| Code | Description | How to solve | Discussion |
|---|---|---|---|
| <a id="FSTSEC001">FSTSEC001</a> | A RegExp Content-Type is used that may be vulnerable to a CORS bypass, because it does not anchor the essence MIME type. | Start the RegExp with ^ or include ;? so the essence MIME type is detected correctly. | #4450 |
| <a id="FSTSEC002">FSTSEC002</a> | A headers schema references an external $ref (a schema registered with addSchema) that is not reached by header case normalization. Header names in the referenced schema keep their original case and do not match the lowercased request headers, so case-insensitive assertions such as required and dependencies may not apply. | Inline the header schema instead of referencing it with an external $ref. | - |
Deprecation codes are supported by the Node.js CLI options:
| Code | Description | How to solve | Discussion |
|---|---|---|---|
| <a id="FSTDEP022">FSTDEP022</a> | You are trying to access the deprecated router options on top option properties. | Use options.routerOptions. | #5985 |
| <a id="FSTDEP023">FSTDEP023</a> | disableRequestLogging top-level option is deprecated. | Pass a LogController instance via the logController option with disableRequestLogging in its constructor instead. | |
| <a id="FSTDEP024">FSTDEP024</a> | requestIdLogLabel top-level option is deprecated. | Pass a LogController instance via the logController option with requestIdLogLabel in its constructor instead. | |
| <a id="FSTDEP025">FSTDEP025</a> | Calling addHttpMethod for an existing HTTP method without { overrideExisting: true } is deprecated. | Pass { overrideExisting: true } to make the override explicit. | #6879 |