Some checks failed
Test examples / Test Examples (20) (push) Has been cancelled
Test examples / Test Examples (22) (push) Has been cancelled
Lock Threads / action (push) Has been cancelled
Trigger Release / start (push) Has been cancelled
Stale issue handler / stale (push) Has been cancelled
Update Font Data / create-pull-request (push) Has been cancelled
build-and-deploy / deploy-target (push) Has been cancelled
build-and-deploy / build (push) Has been cancelled
build-and-deploy / stable - aarch64-unknown-linux-musl - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-unknown-linux-musl - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-unknown-linux-gnu - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-unknown-linux-gnu - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-pc-windows-msvc - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-pc-windows-msvc - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-apple-darwin - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-apple-darwin - node@16 (push) Has been cancelled
build-and-deploy / build-wasm (nodejs) (push) Has been cancelled
build-and-deploy / build-wasm (web) (push) Has been cancelled
build-and-deploy / Deploy preview tarball (push) Has been cancelled
build-and-deploy / Potentially publish release (push) Has been cancelled
build-and-deploy / publish-turbopack-npm-packages (push) Has been cancelled
build-and-deploy / Deploy examples (push) Has been cancelled
build-and-deploy / thank you, build (push) Has been cancelled
build-and-deploy / Upload Turbopack Bytesize metrics to Datadog (push) Has been cancelled
Rspack Next.js development integration tests / Rspack integration tests (push) Has been cancelled
Rspack Next.js production integration tests / Rspack integration tests (push) Has been cancelled
Turbopack Next.js development integration tests / Next.js integration tests (push) Has been cancelled
Turbopack Next.js production integration tests / Next.js integration tests (push) Has been cancelled
Update Rspack test manifest / Update and upload Rspack development test manifest (push) Has been cancelled
Update Rspack test manifest / Update and upload Rspack production test manifest (push) Has been cancelled
Upload bundler test manifests to areweturboyet.com / Upload test results (push) Has been cancelled
Update React / create-pull-request (push) Has been cancelled
test-e2e-project-reset-cron / reset-test-project (push) Has been cancelled
Notify about the top 15 issues/PRs/feature requests (most reacted) in the last 90 days / run (push) Has been cancelled
120 lines
3.5 KiB
Plaintext
120 lines
3.5 KiB
Plaintext
---
|
||
title: '`next/image` Un-configured Host'
|
||
---
|
||
|
||
## Why This Error Occurred
|
||
|
||
One of your pages that leverages the `next/image` component, passed a `src` value that uses a hostname in the URL that isn't defined in the `images.remotePatterns` in `next.config.js`.
|
||
|
||
Each part of the `src` value is strictly matched against your `images.remotePatterns` definitions. Matching is exact and case-sensitive, meaning a mismatch in any single part will fail the check.
|
||
|
||
For a URL like `https://example.org/images/example?v=1234`, the following parts must match the pattern you configured:
|
||
|
||
- **Protocol**: `http` vs `https` must match exactly.
|
||
- **Hostname**: `example.org` is different from `www.example.org` and from subdomains like `assets.example.org`.
|
||
- **Port**: If present (e.g. `:3000`), it must be included.
|
||
- **Pathname**: The path must be covered by your glob, e.g. `/**` or `/images/**`.
|
||
- **Search**: If specified in a pattern, it must match the full search string exactly (including the leading `?`). Globs are not supported for search.
|
||
|
||
If any of these differ from the actual `src`, the image will be rejected.
|
||
|
||
Common pitfalls that cause this error:
|
||
|
||
- Using `https` in `src` but only allowing `http` (or vice‑versa).
|
||
- Loading from a subdomain like `assets.example.com` while only configuring `example.com`.
|
||
- Missing a port during local/dev usage, e.g. `http://localhost:3000`.
|
||
- A too‑narrow pathname pattern (e.g. `/images/` instead of `/images/**`).
|
||
- When using the `URL` constructor, if no `search` is specified, then the `search` property is set to an empty string `''`, which means search params are **NOT** allowed.
|
||
|
||
See the [Remote Patterns](/docs/pages/api-reference/components/image#remotepatterns) reference for details.
|
||
|
||
## Possible Ways to Fix It
|
||
|
||
Add the protocol, hostname, port, and pathname to the `images.remotePatterns` config in `next.config.js`:
|
||
|
||
```js filename="next.config.js"
|
||
module.exports = {
|
||
images: {
|
||
remotePatterns: [new URL('https://assets.example.com/account123/**')],
|
||
},
|
||
}
|
||
```
|
||
|
||
### With specific search params
|
||
|
||
To allow a single search param, `v=1234`:
|
||
|
||
```js filename="next.config.js"
|
||
module.exports = {
|
||
images: {
|
||
remotePatterns: [
|
||
new URL('https://assets.example.com/account123/**?v=1234'),
|
||
],
|
||
},
|
||
}
|
||
```
|
||
|
||
### Any search params
|
||
|
||
To allow any search parameter, use the remote pattern object, omitting the `search` key.
|
||
|
||
```js filename="next.config.js"
|
||
module.exports = {
|
||
images: {
|
||
remotePatterns: [
|
||
{
|
||
protocol: 'https',
|
||
hostname: 'assets.example.com',
|
||
port: '',
|
||
pathname: '/account123/**',
|
||
},
|
||
],
|
||
},
|
||
}
|
||
```
|
||
|
||
### Fixing older versions of Next.js
|
||
|
||
<details>
|
||
<summary>Using Next.js prior to 15.3.0?</summary>
|
||
|
||
Older versions of Next.js can configure `images.remotePatterns` using the object:
|
||
|
||
```js filename="next.config.js"
|
||
module.exports = {
|
||
images: {
|
||
remotePatterns: [
|
||
{
|
||
protocol: 'https',
|
||
hostname: 'assets.example.com',
|
||
port: '',
|
||
pathname: '/account123/**',
|
||
search: '',
|
||
},
|
||
],
|
||
},
|
||
}
|
||
```
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary>Using Next.js prior to 12.3.0?</summary>
|
||
|
||
Older versions of Next.js can configure `images.domains` instead:
|
||
|
||
```js filename="next.config.js"
|
||
module.exports = {
|
||
images: {
|
||
domains: ['assets.example.com'],
|
||
},
|
||
}
|
||
```
|
||
|
||
</details>
|
||
|
||
## Useful Links
|
||
|
||
- [Image Optimization Documentation](/docs/pages/api-reference/components/image)
|
||
- [Remote Patterns Documentation](/docs/pages/api-reference/components/image#remotepatterns)
|