This is an n8n community node. It lets you use Deno in your n8n workflows.
Deno is the open-source JavaScript runtime for the modern web. Built on web standards with zero-config TypeScript, unmatched security, and a complete built-in toolchain, Deno is the easiest, most productive way to JavaScript.
n8n is a fair-code licensed workflow automation platform.
Installation
Operations
Compatibility
Usage
Resources
Follow the installation guide in the n8n community nodes documentation.
- Execute TypeScript code in Deno runtime
- Allows you to import any of thousands of Deno and npm libraries
- Support modes like in Code node: "Run Once for All Items" or "Run Once for Each Item"
- Support Sequential or Parallel execution for input items
- Support Deno Permissions
- Tested against n8n version: 1.37.3
- Tested against Deno version: 1.42.4
Deno code Node does not work in the original n8nio/n8n - Docker Image.
The libraries required for Deno need to be installed in the container.
This can be done as follows: Dockerfile. The source of the solution: Deno Alpine Dockerfile.
ARG N8N_VERSION
FROM gcr.io/distroless/cc as cc
FROM n8nio/n8n:${N8N_VERSION}
USER root
# from: https://github.com/denoland/deno_docker/blob/4d61d7da8e7350ee31862d1a5e6268993f4dd1ff/alpine.dockerfile#L22
COPY --from=cc --chown=root:root --chmod=755 /lib/*-linux-gnu/* /usr/local/lib/
COPY --from=cc --chown=root:root --chmod=755 /lib/ld-linux-* /lib/
RUN mkdir -p /lib64 \
&& ln -sf /usr/local/lib/ld-linux-* /lib64/ \
&& rm -f /usr/local/lib/libgcc_s.so.1
ENV LD_LIBRARY_PATH="/usr/local/lib"
USER node
Generate id with nanoid | Deno
const { nanoid } = await import("https://deno.land/x/nanoid@v3.0.0/mod.ts");
return {
id: nanoid()
}
Slugify blog title with slug | Deno
const { slug } = await import("https://deno.land/x/slug@v1.1.0/mod.ts");
return {
...$json,
slug: slug($json.title),
}
Generate mock data with deno_mock | Deno
const Mock = (await import("https://deno.land/x/deno_mock@v2.0.0/mod.ts")).default;
var tpl = {
"list|1-4": [{
"id|+1": 1,
"email": "@EMAIL",
}],
};
return Mock.mock(tpl).list;