Troubleshooting
Sometimes, things go wrong. Here are listed several situations you may encounter,
How do I login? What is a server?
A DHIS2 application needs to talk to a DHIS2 server. When running in development mode (i.e. yarn start
) the application will present a login dialog which allows the user to specify the URL of the server. In production, unless the --standalone
option is specified, this dialog is hidden because the application is automatically configured to talk to the server where it is installed.
You should specify the fully-qualified base URL of a running DHIS2 server (including the http://
or https://
protocol) in the Server field of the login dialog.
Make sure that the the URL of your application (localhost:3000
in this case)
is included in the DHIS2 server's CORS whitelist (System Settings -> Access). If
your server or browser has domain-restricting settings (such as the
SameSite=Lax
), the --proxy
option of the
start
command may be helpful.
For testing purposes, https://play.dhis2.org/dev
will NOT work because it is configured for secure same-site access, while https://debug.dhis2.org/dev
should work.
If you have a local instance running with d2 cluster
, you can specify http://localhost:8080
in the Server field.
Upgrading to v5.6 (for libraries only) - correcting package.json export declarations
In @dhis2/cli-app-scripts
version 5.6.0 library compilation was changed to build each file individually, rather than bundling the entire library into a single lib.js
file. This change improves the chances that the library can be tree-shaken when built with an application.
As a result of this change, the name of the main entrypoints built by d2-app-scripts build
will likely change - instead of build/es/lib.js
and build/cjs/lib.js
it will likely be build/es/index.js
and build/cjs/index.js
(replace index.js
with the name of the lib
entrypoint defined in d2.config.js
). Since libraries installed through npm
use the main
, module
, and (more recently) exports
fields in package.json
to determine where to look for commonjs and ES module entrypoints, this could cause issues if your package.json
isn't updated. To make this easier, we include strict package validation in the build script. d2-app-scripts build
will warn you (and fail to build) if the main
, module
, or exports
declarations in your package.json
don't match what the compiler will output. The build script will also offer to automatically fix the issue, if desired. This should cause builds with a naïvely-upgraded @dhis2/cli-app-scripts
to "fail fast" when a build is run on CI (rather than silently succeeding and potentially causing an invalid package to be published), while offering a painless way to fix the issue locally.
NOTE - it is important, also, to specify
build/es/locales/index.js
andbuild/cjs/locales/index.js
in thesideEffects
array inpackage.json
! Without this, the locales for the library might be tree-shaken out of your application's final bundle. This shouldn't be necessary for long (i18n should be improved in v6), but it's important to take into account when upgrading to >= v5.6
If you know what you're doing and want to use a different main
, module
, or exports
value, run d2-app-scripts build --no-verify
to skip this check at build time
Named Import Compilation Error
!> THIS ISSUE HAS BEEN RESOLVED
!> Prior to the release of version 1.6 this issue required a complicated and inefficient workaround. As of version 1.6.0 you should no longer encounter this error - please upgrade to the latest version of @dhis2/cli-app-scripts
and open an issue on GitHub if the problem persists.
See Issue #69
'<ImportName>' is not exported by node_modules/<package>/<file>.js
This error indicates a failure to statically resolve an import from one of the application's dependencies.
For example, when trying to import BrowserRouter from 'react-router-dom' you might see this error:
[ERROR] Error: 'BrowserRouter' is not exported by node_modules/react-router-dom/index.js
[ERROR] At **src/App.js:4:9**
Line 4 of src/App.js is import { BrowserRouter } from 'react-router-dom'
To resolve, please upgrade to the latest version of @dhis2/cli-app-scripts
(yarn add @dhis2/cli-app-scripts
)