10 months ago
I've been trying to install a package called quill-delta-to-html. I tried to add variables to in my railway dashboard:
NODE_FUNCTION_ALLOW_EXTERNAL=quill-delta-to-html
but it looks like it doesn't work. The reason I need this package is that ClickUp api is giving me a RichText in quill delta format.
87 Replies
10 months ago
As answered through DMs, you'll need to install through NPM
https://www.npmjs.com/package/quill-delta-to-html
*I'm guessing that you're using nodejs
10 months ago
when opening that page there'll be a install command you can run
I tried adding the variable and chatgpt/gemini couldn't give me a working guide for that
10 months ago
but it is npm install quill-delta-to-html
10 months ago
on your terminal
10 months ago
oh you're on a n8n environment, sorry for that
10 months ago
so n8n needs that? to parse the quill format
10 months ago
chatgpt is also assuming what I was assuming, that you're on a normal nodejs project with access to the terminal (basically, writing your own code)
Ye but I told chatgpt I am on railway so it asked me to add some variables which I did but still didn't work
10 months ago
don't trust chatgpt with Railway, it always gives wrong answers
10 months ago
unfortunately I don't know how to proceed here as I'm unfamiliar with n8n but I would assume that it has someway of parsing that built-in, if not then you're unlucky here.
10 months ago
I see a way of implementing this: you could create a Railway function (Railway has a built-in AI) where n8n calls that function, the function parses it, and then you process the response in n8n.
10 months ago
The flow would look like:
- Create an n8n node to call an external API/endpoint.
- Create a function on Railway (https://docs.railway.com/reference/functions).
- Use the Railway's AI and tell it to write a code where it uses
quill-delta-to-htmlpackage to parse an external payload through an API endpoint. - Copy the public endpoint URL from that function and then use it in the first node we created.
10 months ago
that's steps you should follow, no AI at the moment can do that automatically.
10 months ago
looks right to me
10 months ago
There should be the "Apply Changes" popup. Also, make sure that you save the code by clicking the save button.

10 months ago
Yeah, feel free to do so
10 months ago
there should be an URL under the source code editor
10 months ago
and from the looks of it, it seems to just accept a JSON payload and parse it or under the property ops
{ "body": { "test": "test" }, "headers": { "accept": "application/json,text/html,application/xhtml+xml,application/xml,text/;q=0.9, image/;q=0.8, /;q=0.7" }, "method": "POST", "uri": "hidden", "gzip": true, "rejectUnauthorized": true, "followRedirect": true, "resolveWithFullResponse": true, "followAllRedirects": true, "timeout": 300000, "encoding": null, "json": false, "useStream": true }
10 months ago
sorry, it's under the /convert endpoint path
10 months ago
can you get me an example of a quill payload?
10 months ago
give me a minute to know how the library works
how do u feel solving a problem not even geminig and chatgpt could
10 months ago
also, are you able to send me your quill payload + the source code for the function?
10 months ago
here please
import { QuillDeltaToHtmlConverter } from "quill-delta-to-html";
const app = new Hono();
app.post("/convert", async (c) => {
try {
const payload = await c.req.json();
const converter = new QuillDeltaToHtmlConverter(payload.ops || [], {});
const html = converter.convert();
return c.json({
html: html,
success: true
});
} catch (error) {
return c.json({
error: error instanceof Error ? error.message : "Unknown error",
success: false
}, 400);
}
});
Bun.serve({
port: Bun.env.PORT ?? 3000,
fetch: app.fetch
});```
[1434228755139920013](https://media.discordapp.net/attachments/1434221933309722624/1434228755139920013/message.txt?ex=6907911d&is=69063f9d&hm=7d2b6d59316998d1ff763b503ef40b3b4505b9f94652da58e6c119289ca378d5&)10 months ago
Ok, I see the issue now
10 months ago
what are the options on Specify body?
10 months ago
No, the option input below it
10 months ago
Select the option Using JSON
10 months ago
Then, just pass the n8n template directly e.g. {{ $json.custom_fields <..> }}
10 months ago
try with the .toJsonString, if it still doesn't work remove it
10 months ago
but then you're passing the "quill-data" and all of that, I meant to only pass the template directly
10 months ago
by template I mean this: {{ $json.custom_fields[2].value_richtext.toJsonString() }}. Just fill that on the input and nothing else.
i take back everything I said about LLM taking human programmer jobs
10 months ago
Great to hear that 😅
Anyway, do you've any more questions?
10 months ago
Also, about your DMs, any particular reason why you would be migrating away from Railway?
10 months ago
That's not a problem, we would really like to keep you on Railway.
10 months ago
For example, you wouldn't be able to keep the support you had right now as a DigitalOcean customer.
10 months ago
Great to hear, let me know if you've any other issues! will be closing this thread
10 months ago
!s
Status changed to Solved passos • 10 months ago







