Gojs makeImageData using nodejs

I’m trying to generate a gojs diagram image using server side nodejs.

Here is my script below, but I can’t figure out why makeImageData just returns null? How can I make it return base64 image data.

const go = require("gojs");

var $ = go.GraphObject.make;  // for conciseness in defining templates

const myDiagram =
    $(go.Diagram, '', // No DOM, so there can be no DIV!
            viewSize: new go.Size(400,400), // Set this property in DOM-less environments
            layout: $(go.LayeredDigraphLayout)

myDiagram.nodeTemplate =
    $(go.Node, "Auto",  // the Shape will go around the TextBlock
        $(go.Shape, "RoundedRectangle", { strokeWidth: 0, fill: "white" },
            // Shape.fill is bound to Node.data.color
            new go.Binding("fill", "color")),
            { margin: 8, font: "bold 14px sans-serif", stroke: '#333' }, // Specify a margin to add some room around the text
            // TextBlock.text is bound to Node.data.key
            new go.Binding("text", "key"))

myDiagram.model = new go.GraphLinksModel(
        { key: "Alpha", color: "lightblue" },
        { key: "Beta", color: "orange" },
        { key: "Gamma", color: "lightgreen" },
        { key: "Delta", color: "pink" }
        { from: "Alpha", to: "Beta" },
        { from: "Alpha", to: "Gamma" },
        { from: "Beta", to: "Beta" },
        { from: "Gamma", to: "Delta" },
        { from: "Delta", to: "Alpha" }

myDiagram.addDiagramListener('InitialLayoutCompleted', function() {
        type: 'image/png',


I assume you started from https://gojs.net/latest/intro/nodeScript.html.

The problem is that if you want to render images you need to use the HTML DOM. But the Node.js environment does not provide an implementation of the HTML DOM unless you use Puppeteer or something like that.

So this page would be more appropriate: https://gojs.net/latest/intro/serverSideImages.html