Skip to content

TypeError: e.annotationJson.resources is undefined #80

@D-Groenewegen

Description

@D-Groenewegen

My use case

  • I set up Mirador 3 to use a basic Webpack output (main.js), with a couple of plugins including the Annotations plugin v0.4.0.
  • The index.js for the Webpack output does not include a config. it simply exports Mirador, the plugins and a LocalStorageAdapter method.
  • This allows me to set up a separate file which relies on the Webpack output (ES5), sets up a config and initialises Mirador with its plugins. In this way, I don't have to re-compile and re-transpile the code every time I make changes, something I need to do quite a lot.
  • I could not export LocalStorageAdapter directly because that would give me TypeError: Invalid attempt to spread non-iterable instance. In order to be iterable, non-array objects must have a [Symbol.iterator]() method. Instead I exported/imported a method with LocalStorageAdapter for use with the config:
function adapter( canvasId ) {
	return new LocalStorageAdapter(`localStorage://?canvasId=${canvasId}`);
}

or a variant with a check on the input:

var adapter = function( canvasId ) {
	console.log('canvasId: ' + canvasId );
	var newAdapter = new LocalStorageAdapter( 'localStorage://?canvasId=' + canvasId );
	return newAdapter;
}

(which also works using arrow notation)

The problem

By and large, the setup seems to be working quite well: I can create annotations, edit the descriptions, download annotations to my computer, and refresh the page with annotations still intact. But every time I create a new annotation, there is an error in the console that worries me and makes me question if my setup is sound:

TypeError: e.annotationJson.resources is undefined

The variant with the log tells me that canvasid is retrieved correctly, although what's fetched at other times is just 'poke' (an API check I guess).

The other thing I noticed is that the window on the left shows a collection of all annotations from any canvas and does not change when changing canvases.

Cf. Netlify app

FWIW, It's probably unrelated but to compare behaviours, I had a look at the Netlify app (https://mirador-annotations.netlify.app/), which uses a different version of the Annotations plugin. The browser reveals the following error:

TypeError: c is undefined
    paperThing AnnotationDrawing.js:71
    render AnnotationDrawing.js:146
    React 8
    unstable_runWithPriority scheduler.production.min.js:18
    React 5

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions