Describe the problem/error/question
I am trying to use external Task Runners with n8n v2.4.8 to import external npm modules (puppeteer-extra). The Task Runner starts but fails to launch the runner process, resulting in a timeout in the n8n UI.
docker logs -f withpostgres-task-runners-1
2026/02/01 18:11:18 INFO Starting launcher’s health check server at port 5680
2026/02/01 18:11:18 INFO [launcher:js] Starting launcher goroutine…
2026/02/01 18:11:18 INFO [launcher:py] Starting launcher goroutine…
2026/02/01 18:11:18 WARN DEPRECATION WARNING: N8N_RUNNERS_AUTO_SHUTDOWN_TIMEOUT will no longer be automatically passed to runners in a future version. Please add this env var to ‘allowed-env’ or use ‘env-overrides’ in your task runner config to maintain current behavior.
2026/02/01 18:11:18 WARN DEPRECATION WARNING: N8N_RUNNERS_TASK_TIMEOUT will no longer be automatically passed to runners in a future version. Please add this env var to ‘allowed-env’ or use ‘env-overrides’ in your task runner config to maintain current behavior.
2026/02/01 18:11:18 WARN DEPRECATION WARNING: N8N_RUNNERS_AUTO_SHUTDOWN_TIMEOUT will no longer be automatically passed to runners in a future version. Please add this env var to ‘allowed-env’ or use ‘env-overrides’ in your task runner config to maintain current behavior.
2026/02/01 18:11:18 WARN DEPRECATION WARNING: N8N_RUNNERS_TASK_TIMEOUT will no longer be automatically passed to runners in a future version. Please add this env var to ‘allowed-env’ or use ‘env-overrides’ in your task runner config to maintain current behavior.
2026/02/01 18:11:18 INFO [launcher:py] Waiting for task broker to be ready…
2026/02/01 18:11:18 INFO [launcher:js] Waiting for task broker to be ready…
2026/02/01 18:11:23 INFO [launcher:py] Waiting for launcher’s task offer to be accepted…
2026/02/01 18:11:23 INFO [launcher:js] Waiting for launcher’s task offer to be accepted…
2026/02/01 18:12:17 ERROR [launcher:js] Failed to execute launch command: failed to start runner process: fork/exec node /opt/runners/task-runner-javascript/dist/start.js: no such file or directory
my docker-compose.yml:
n8n:
image: n8nio/n8n:latest
restart: always
environment:
…
- N8N_RUNNERS_ENABLED=true
- N8N_RUNNERS_MODE=external
- N8N_RUNNERS_ENABLED_TASK_TYPES=javascript,python
- N8N_RUNNERS_BROKER_LISTEN_ADDRESS=0.0.0.0
- N8N_RUNNERS_AUTH_TOKEN=${N8N_RUNNERS_AUTH_TOKEN}
volumes:
- n8n_storage:/home/node/.n8n
depends_on:
postgres:
condition: service_healthy
mongodb:
condition: service_healthy
networks:
- n8n-network
expose:
- 5678
task-runners:
build:
context: .
dockerfile: Dockerfile.runners
restart: always
environment:
- N8N_RUNNERS_TASK_BROKER_URI=http://n8n:5679
- N8N_RUNNERS_AUTH_TOKEN=${N8N_RUNNERS_AUTH_TOKEN}
- N8N_RUNNERS_ENABLED_TASK_TYPES=javascript,python
- N8N_RUNNERS_AUTO_SHUTDOWN_TIMEOUT=15
- N8N_RUNNERS_LAUNCHER_HEALTH_CHECK_PORT=5680
depends_on:
- n8n
networks:
- n8n-network
my Dockerfile.runners:
FROM n8nio/runners:latest
USER root
RUN cd /opt/runners/task-runner-javascript
&& pnpm add puppeteer-extra puppeteer-extra-plugin-adblocker @ghostery/adblocker-puppeteer
COPY n8n-task-runners.json /etc/n8n-task-runners.json
RUN chown runner:runner /etc/n8n-task-runners.json && chmod 644 /etc/n8n-task-runners.json
USER runner
my n8n-task-runners.json:
{
“task-runners”: [
{
“runner-type”: “javascript”,
“workdir”: “/home/runner”,
“command”: “/usr/local/bin/node”,
“args”: [
“–disallow-code-generation-from-strings”,
“–disable-proto=delete”,
“/opt/runners/task-runner-javascript/dist/start.js”
],
“health-check-server-port”: “5681”,
“env-overrides”: {
“NODE_FUNCTION_ALLOW_BUILTIN”: “",
“NODE_FUNCTION_ALLOW_EXTERNAL”: “puppeteer-extra,puppeteer-extra-plugin-adblocker,@ghostery/adblocker-puppeteer”
}
},
{
“runner-type”: “python”,
“workdir”: “/home/runner”,
“command”: “/opt/runners/task-runner-python/.venv/bin/python”,
“args”: [
“-m”,
“src.main”
],
“health-check-server-port”: “5682”,
“env-overrides”: {
“PYTHONPATH”: “/opt/runners/task-runner-python”,
“N8N_RUNNERS_STDLIB_ALLOW”: "”,
“N8N_RUNNERS_EXTERNAL_ALLOW”: “*”
}
}
]
}
What is the error message (if any)?
ERROR [launcher:js] Failed to execute launch command: failed to start runner process: fork/exec node /opt/runners/task-runner-javascript/dist/start.js: no such file or directory
Task request timed out after 60 seconds
Please share your workflow
{
“nodes”: [
{
“parameters”: {
“jsCode”: “const puppeteer = require(‘puppeteer-extra’);\nreturn { status: "Modulo caricato con successo!" };”
},
“type”: “n8n-nodes-base.code”,
“typeVersion”: 2,
“position”: [
-656,
560
],
“id”: “32030497-225f-4b94-996a-ae6f7985fbfa”,
“name”: “Code in JavaScript”
}
],
“connections”: {},
“pinData”: {},
“meta”: {
“templateCredsSetupCompleted”: true,
“instanceId”: “51687337d09e3cb8f55257cf8cb69045704945fea4f600d0bf225865548b5f7a”
}
}
Share the output returned by the last node
Task request timed out after 60 seconds
Your Code node task was not matched to a runner within the timeout period. This indicates that the task runner is currently down, or not ready, or at capacity, so it cannot service your task.
If you are repeatedly executing Code nodes with long-running tasks across your instance, please space them apart to give the runner time to catch up. If this does not describe your use case, please open a GitHub issue or reach out to support.
If needed, you can increase the timeout using the N8N_RUNNERS_TASK_REQUEST_TIMEOUT environment variable.
Information on your n8n setup
- n8n version: 2.4.8
- Database (default: SQLite): Postgres
- n8n EXECUTIONS_PROCESS setting (default: own, main): default
- Running n8n via (Docker, npm, n8n cloud, desktop app): Docker (Compose)
- Operating system: Linux (debian)