Skip to content

Problems and Solutions

Problem

Building TerriaMap (without yarn workspaces) throws an error like:

You have two copies of terriajs-cesium

Solution

Check:

npm list terriajs-cesium

If there are 2 different versions listed, run:

gulp sync-terriajs-dependencies

If there's only 1 version listed in 2 places your npm lockfile is playing up. To fix it run:

npm install --save-exact terriajs
npm dedupe
npm install

Commit lockfile


Problem

When using yarn workspaces to develop a TerriaMap against a custom version of terriajs yarn install throws error

An unexpected error occurred: "expected workspace package to exist for \"pkg-dir\""

or a similar error with a different package. Sometimes yarn versions after yarn@1.19.0 will cause an error when running yarn install using workspaces. The Github issue describing it https://github.com/yarnpkg/yarn/issues/7807 has comments saying it’s caused by a workspace trying to install a different version of the same dependency.

Workaround

Easiest fix is to install dependencies using an older version of yarn:

npx yarn@1.19.0 install

It’s possible the problem could also be fixed in certain cases by syncing dependency versions for the same package, and ensuring that a workspace doesn’t install the same dependency but with a different version. Syncing dependencies could help:

gulp sync-terriajs-dependencies