Module.requestFullscreen is not a function in Emscripten

When compiling to WebAssembly using Emscripten, Emscripten gives you .wasm file, a .html file and a .js file. The html file, it seems, is set up to give a basic demonstration of the workings of calling WebAssembly from Javascript. It declares an object named module, it has members fields (print, canvas, setStatus, totalDependencies and monitorDependencies):

var Module = {
        print: (function() {
          var element = document.getElementById('output');
          if (element) element.value = ''; // clear browser cache
          return (...args) => {
            var text = args.join(' ');
            // These replacements are necessary if you render to raw HTML
            //text = text.replace(/&/g, "&");
            //text = text.replace(/</g, "&lt;");
            //text = text.replace(/>/g, "&gt;");
            //text = text.replace('n', '<br>', 'g');
            console.log(text);
            if (element) {
              element.value += text + "n";
              element.scrollTop = element.scrollHeight; // focus on bottom
            }
          };
        })(),
        canvas: (() => {
          var canvas = document.getElementById('canvas');

          // As a default initial behavior, pop up an alert when webgl context is lost. To make your
          // application robust, you may want to override this behavior before shipping!
          // See http://www.khronos.org/registry/webgl/specs/latest/1.0/#5.15.2
          canvas.addEventListener("webglcontextlost", (e) => { alert('WebGL context lost. You will need to reload the page.'); e.preventDefault(); }, false);

          return canvas;
        })(),
        setStatus: (text) => {
          if (!Module.setStatus.last) Module.setStatus.last = { time: Date.now(), text: '' };
          if (text === Module.setStatus.last.text) return;
          var m = text.match(/([^(]+)((d+(.d+)?)/(d+))/);
          var now = Date.now();
          if (m && now - Module.setStatus.last.time < 30) return; // if this is a progress update, skip it if too soon
          Module.setStatus.last.time = now;
          Module.setStatus.last.text = text;
          if (m) {
            text = m[1];
            progressElement.value = parseInt(m[2])*100;
            progressElement.max = parseInt(m[4])*100;
            progressElement.hidden = false;
            spinnerElement.hidden = false;
          } else {
            progressElement.value = null;
            progressElement.max = null;
            progressElement.hidden = true;
            if (!text) spinnerElement.style.display = 'none';
          }
          statusElement.innerHTML = text;
        },
        totalDependencies: 0,
        monitorRunDependencies: (left) => {
          this.totalDependencies = Math.max(this.totalDependencies, left);
          Module.setStatus(left ? 'Preparing... (' + (this.totalDependencies-left) + '/' + this.totalDependencies + ')' : 'All downloads complete.');
        }
      };

In the example page it has a ‘fullscreen’ button, and its onclick event listener is set in the html to:

<span><input type="button" value="Fullscreen" onclick="Module.requestFullscreen(document.getElementById('pointerLock').checked, 
                                                                                document.getElementById('resize').checked)">
      </span>

Now, the problem is that the Module object doesn’t have any such requestFullscreen. This doesn’t seem to be a built-in type provided by the browser or the element object in the DOM, it’s a custom object declared by the Javascript, and hence it has no such member ‘requestFullscreen’. Therefore I get the error:

Uncaught TypeError: Module.requestFullscreen is not a function

How is this supposed to work? It seems as if maybe the intent was that the requestFullscreen member was intended to be called on the element, not the Module object, however it’s not possible that this is an error in the code, as it’s Emscripten’s example and been long established already.

Edit: OK, it seems there’s an error in Emscripten’s code, it should be Module.canvas.requestFullscreen, clearly my confidence was misplaced.