INCIDENT RUNBOOK
Fix: Edge Runtime Node Crypto Missing in Fastify on Docker
Comprehensive architectural post-mortem and verified configuration patch for fastify deployed in docker production environments.
Automated Remediation ProtocolUpdated for 2026 Production
Facing edge-runtime-node-crypto-missing in CI/CD or runtime containers?
Review the verified configuration patches below. To automate incident triage and fine-tune your own internal agents, check out our production AI training datasets.
● Observed Terminal Error / Stack Trace
Error: Cannot find module 'crypto' from '/app/node_modules/fastify/lib/runtime.js'
at Function.Module._resolveFilename (module.js:548:15)
at Function.Module._load (module.js:475:25)
at Module.require (module.js:597:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/app/node_modules/fastify/lib/runtime.js:10:14)
at Module._compile (module.js:653:30)
at Object.Module._extensions..js (module.js:664:10)
at Module.load (module.js:566:32)
at tryModuleLoad (module.js:506:12)Root Cause Analysis
The error occurs due to a mismatch between the Node.js version used in the Docker container and the version expected by the Fastify framework. Specifically, the `node:crypto` module is not compatible with the Edge Runtime environment, causing a runtime incompatibility issue. This is because the Edge Runtime is optimized for low-latency and high-performance, but it uses a different V8 JavaScript engine version that doesn't include the full Node.js crypto module.
● Configuration & Code Resolution
To fix this issue, update the `docker-compose.yml` file to use a Node.js version that is compatible with the Edge Runtime environment. Specifically, add the following configuration to the `docker-compose.yml` file:
---
version: '3'
-services:
app:
build:.
environment:
- NODE_VERSION=16.14.2
- EDGE_RUNTIME_COMPATIBLE=true
---
Additionally, update the `package.json` file to include the `node:crypto` module as a dependency:
---
{
"name": "fastify-app",
"version": "1.0.0",
"dependencies": {
"fastify": "^3.27.4",
"node:crypto": "^1.0.1"
}
}
---Verification & Build Command
docker-compose up --build && docker exec -it app node -e "require('crypto'); console.log('Crypto module loaded successfully');"