---
title: "Document Engine common issues"
canonical_url: "https://www.nutrient.io/guides/document-engine/troubleshooting/miscellaneous/common-issues/"
md_url: "https://www.nutrient.io/guides/document-engine/troubleshooting/miscellaneous/common-issues.md"
last_updated: "2026-06-19T09:21:00.233Z"
description: "Solutions for common issues and errors in Nutrient Document Engine SDK with debugging tips and workarounds."
---

# Common issues

This article lists some of the most common issues you might encounter while integrating Document Engine.

## Accessing the error log

Document Engine will pipe useful logging information to the attached [standard streams](https://en.wikipedia.org/wiki/Standard_streams), stdout and stderr. When you submit a bug report, always make sure to include the relevant lines.

Accessing this information depends on your [deployment option](https://www.nutrient.io/sdk/document-engine/getting-started.md#deployment-options). If you have started Document Engine locally, you can open the terminal window the Document Engine is running in to see the output.

In production, you can use [`docker logs`](https://docs.docker.com/engine/reference/commandline/logs/) or a similar tool, depending on your deployment option.

If the log does not contain useful information, you can try to set the log level to `debug` with the `LOG_LEVEL` environment variable.

## Invalid token

When receiving the “Invalid Token” error, you can debug and verify your token on [jwt.io](https://jwt.io/). You’ll also get an error in the Document Engine log, where you can see if the token has expired or if the user has no access for the given document.

For Web SDK clients in server-backed mode, handle short-lived JWT expiry by using `onAuthFailed` and calling `setSession(newJwt)` during recovery. Refer to the guide on [web client authentication and session renewal](https://www.nutrient.io/guides/web/viewer/client-authentication.md).

## Running Document Engine with Docker Toolbox

Docker Toolbox is for older versions of Mac and Windows, and we recommend updating to [Docker for Mac](https://docs.docker.com/docker-for-mac/) or [Docker for Windows](https://docs.docker.com/docker-for-windows/) if possible.

When running Document Engine on [Docker Toolbox](https://docs.docker.com/toolbox/overview/), it won’t be reachable with `localhost`, because Docker Toolbox is running a Linux VM in VirtualBox.

To get the IP address of your Docker machine, which can be used instead of `localhost`, run the following:

```shell

docker-machine ip

```

## Document Engine does not start due to a pending migration error

This error occurs when the Document Engine is not able to do database migrations. Make sure you use the recommended version of Postgres.

## Issue when running on Windows: Pulling from Nutrient image operating system “Linux” cannot be used on this platform

This may happen when your Docker engine is configured to run Windows containers and Document Engine is packaged as a Linux image. We recommend installing [Docker for Windows](https://docs.docker.com/docker-for-windows/), which adds a thin VM that can run Linux containers. See [this issue](https://github.com/moby/moby/issues/27668#issuecomment-255608035) on Docker’s issue tracker for more technical details.

Learn more in our [Docker guide](https://www.nutrient.io/guides/document-engine/deployment/docker-registry.md).

## exdev error when copying assets

In certain cases, you might encounter errors like this:

```

[error] 2020-11-19 21:05:39.193 Failed to copy asset
    src_path=assets/tmp/srce51eefd73992a43a889439de355ac6e10f1d8cb2a9b395a50e84828c5614b4e71605819939159534835
    dst_path=assets/cache/source/e5/1eefd73992a43a889439de355ac6e10f1d8cb2a9b395a50e84828c5614b4e7:
    :exdev pid=<0.2505.0>

[error] 2020-11-19 21:05:39.193 Error accessing cache: storage_failure. Please contact support@nutrient.io pid=<0.3002.0>

```

The `:exdev` error code you see here means the `assets/tmp/` and `assets/cache/` folders are not on the same mountpoint. This can happen when you’re configuring a volume mount at `/srv/pspdfkit/assets/cache` and it points to a different disk than the one Docker is running off of. It’s thrown because, despite the error log saying we copy the asset, for efficiency reasons, we only move it from the `tmp` folder to the `cache` folder.

The [documentation](https://man7.org/linux/man-pages/man2/rename.2.html) for the Linux rename function has more information:

```

EXDEV  oldpath and newpath are not on the same mounted filesystem.
       (Linux permits a filesystem to be mounted at multiple points,
       but rename() does not work across different mount points, even
       if the same filesystem is mounted on both.)

```

---

## Bug reports

If you experience an issue you believe is related to Document Engine, [report this to us](https://support.nutrient.io/hc/en-us/requests/new). When reporting, give us as much information as possible so that we can help you more effectively. Refer to our [Bug Reporting](https://www.nutrient.io/guides/document-engine/troubleshooting/miscellaneous/bug-reporting.md) guide for more details.
---

## Related pages

- [Password-protected PDFs](/guides/document-engine/troubleshooting/miscellaneous/password-protected-pdfs.md)
- [Difference between Docker and Kubernetes](/guides/document-engine/troubleshooting/miscellaneous/docker-vs-kubernetes.md)
- [PDF Documents Rendering](/guides/document-engine/troubleshooting/miscellaneous/complexities-of-rendering-pdfs.md)
- [Bug reporting](/guides/document-engine/troubleshooting/miscellaneous/bug-reporting.md)
- [Ensure Document Engine connects for activation](/guides/document-engine/troubleshooting/miscellaneous/network-infrastructure.md)

