Skip to content

[Help wanted]: Some of public folder assets is not accessable when deploying NextJS app with basePath #1849

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
1 of 2 tasks
Flaysh opened this issue Dec 21, 2022 · 8 comments · Fixed by #1850
Closed
1 of 2 tasks
Assignees
Labels
status: confirmed A maintainer has reproduced the issue type: bug code to address defects in shipped code

Comments

@Flaysh
Copy link

Flaysh commented Dec 21, 2022

Hey, I have a NextJS built with TypeScript and deployed on Netlify with @netlify/plugin-nextjs

I’m using /m basePath on this web application, and everything works great, except some files under the public folder are not accessible like manifest or favicon files.

Also, its important to say I made this app PWA with next-pwa

Of course, locally everything works great.

For example, I will show the problem with the manifest file:
image

But, the manifest/favicon is accessible on the root route (‘/’)…

I need them to be accessible on /m like the rest of my public assets.
Things I tried:

  • netlify.toml assets redirect:
[[redirects]]
from = "/_next/static/*"
to = "/static/:splat"
status = 301
force = true
  • When I’m accessing those files, add /public OR /m OR just plain file (the correct way)
      <link
        rel="manifest"
        href="manifest.json" | href="https://github.com/m/manifest.json" | href="public/manifest.json" 
      />
  • doing the redirect with middleware file

Thanks to everyone that will help!

Steps to reproduce

See my deploy preview and see that there is no favicon

A link to a reproduction repository

No response

Next Runtime version

v4.29.3 / latest

More information about your build

  • I am building using the CLI
  • I am building using file-based configuration (netlify.toml)

What OS are you using?

Mac OS

Your netlify.toml file

`netlify.toml`
[build]
command = "npm run build"
publish = ".next"

[[plugins]]
package = "@netlify/plugin-nextjs"

[[redirects]]
from = "/"
to = "/m"
status = 301
force = true

Your public/_redirects file

`_redirects`
# Paste content of your `_redirects` file here

Your next.config.js file

next.config.js file
const withPWA = require('next-pwa')({
  dest: 'public',
});

/** @type {import('next').NextConfig} */
const nextConfig = {
  reactStrictMode: true,
  swcMinify: true,
  images: {
    domains: ['maps.googleapis.com'],
  },
  webpack: (
    config
    // { buildId, dev, isServer, defaultLoaders, nextRuntime, webpack }
  ) => {
    config.module.rules.push({
      test: /\.svg$/,
      use: ['@svgr/webpack'],
    });
    return config;
  },
  basePath: '/m',
  async redirects() {
    return [
      {
        source: '/',
        destination: '/m',
        permanent: true,
        basePath: false,
      },
      {
        source: '/',
        destination: '/welcome',
        permanent: true,
      },
    ];
  },
  compiler: {
    styledComponents: true,
  },
};

const withBundleAnalyzer = require('@next/bundle-analyzer')({
  enabled: process.env.ANALYZE === 'true',
});
module.exports = withPWA(withBundleAnalyzer(nextConfig));

Builds logs (or link to your logs)

Build logs
8:32:52 PM: build-image version: d55944c047ef0aee2ac01971edde72cb2a50acfe (focal)
8:32:52 PM: build-image tag: v4.16.1
8:32:52 PM: buildbot version: abbb532f43aba2e093b26ceac3d8b53e7097bae8
8:32:52 PM: Fetching cached dependencies
8:32:52 PM: Starting to download cache of 338.4MB
8:32:55 PM: Finished downloading cache in 3.482086659s
8:32:55 PM: Starting to extract cache
8:32:58 PM: Finished extracting cache in 2.383626356s
8:32:58 PM: Finished fetching cache in 5.944293106s
8:32:58 PM: Starting to prepare the repo for build
8:32:58 PM: Preparing Git Reference pull/160/head
8:32:59 PM: Parsing package.json dependencies
8:33:00 PM: Section completed: initializing
8:33:00 PM: Starting build script
8:33:00 PM: Installing dependencies
8:33:00 PM: Python version set to 2.7
8:33:00 PM: Started restoring cached node version
8:33:01 PM: Finished restoring cached node version
8:33:01 PM: Attempting node version 'v18.12.1' from .nvmrc
8:33:01 PM: v18.12.1 is already installed.
8:33:01 PM: Now using node v18.12.1 (npm v8.19.2)
8:33:01 PM: Enabling node corepack
8:33:01 PM: Started restoring cached build plugins
8:33:01 PM: Finished restoring cached build plugins
8:33:01 PM: Attempting ruby version 2.7.2, read from environment
8:33:02 PM: Using ruby version 2.7.2
8:33:02 PM: Using PHP version 8.0
8:33:02 PM: No npm workspaces detected
8:33:02 PM: Started restoring cached node modules
8:33:02 PM: Finished restoring cached node modules
8:33:02 PM: Started restoring cached go cache
8:33:02 PM: Finished restoring cached go cache
8:33:02 PM: go version go1.19.4 linux/amd64
8:33:02 PM: Detected 1 framework(s)
8:33:03 PM: "next" at version "13.0.5"
8:33:03 PM: Installing missing commands
8:33:03 PM: Verify run directory
8:33:04 PM: ​
8:33:04 PM:   Netlify Build                                                 
8:33:04 PM: ────────────────────────────────────────────────────────────────
8:33:04 PM: ​
8:33:04 PM: ❯ Version
8:33:04 PM:   @netlify/build 29.1.3
8:33:04 PM: ​
8:33:04 PM: ❯ Flags
8:33:04 PM:   baseRelDir: true
8:33:04 PM:   buildId: 63a0ae5267826a000a9f816e
8:33:04 PM:   deployId: 63a0ae5267826a000a9f8170
8:33:04 PM: ​
8:33:04 PM: ❯ Current directory
8:33:04 PM:   /opt/build/repo
8:33:04 PM: ​
8:33:04 PM: ❯ Config file
8:33:04 PM:   /opt/build/repo/netlify.toml
8:33:04 PM: ​
8:33:04 PM: ❯ Context
8:33:04 PM:   deploy-preview
8:33:04 PM: ​
8:33:04 PM: ❯ Using Next.js Runtime - v4.29.3
8:33:05 PM: ​
8:33:05 PM:   1. @netlify/plugin-nextjs (onPreBuild event)                  
8:33:05 PM: ────────────────────────────────────────────────────────────────
8:33:05 PM: ​
8:33:05 PM: Next.js cache restored.
8:33:05 PM: Netlify configuration property "build.environment.NEXT_PRIVATE_TARGET" value changed.
8:33:05 PM: ​
8:33:05 PM: (@netlify/plugin-nextjs onPreBuild completed in 168ms)
8:33:05 PM: ​
8:33:05 PM:   2. build.command from netlify.toml                            
8:33:05 PM: ────────────────────────────────────────────────────────────────
8:33:05 PM: ​
8:33:05 PM: $ npm run build
8:33:05 PM: > [email protected] build
8:33:05 PM: > next build
8:33:06 PM: info  - Loaded env from /opt/build/repo/.env
8:33:06 PM: warn  - Different versions of @next/font (13.0.7) and next (13.0.5) detected. This may lead to unexpected behavior.
8:33:06 PM: info  - Linting and checking validity of types...
8:33:09 PM: ./pages/api/address_details.ts
8:33:09 PM: 12:1  Warning: Assign arrow function to a variable before exporting as module default  import/no-anonymous-default-export
8:33:09 PM: ./pages/api/places.ts
8:33:09 PM: 12:1  Warning: Assign arrow function to a variable before exporting as module default  import/no-anonymous-default-export
8:33:09 PM: ./pages/go-to-app/index.tsx
8:33:09 PM: 13:11  Warning: 'logout' is assigned a value but never used.  @typescript-eslint/no-unused-vars
8:33:09 PM: 13:11  Warning: 'logout' is assigned a value but never used.  no-unused-vars
8:33:09 PM: ./pages/kyc/address/confirm.tsx
8:33:09 PM: 30:40  Warning: Unexpected any. Specify a different type.  @typescript-eslint/no-explicit-any
8:33:09 PM: 39:6  Warning: React Hook useEffect has missing dependencies: 'addressID', 'fetchAddressDetails', and 'navigate'. Either include them or remove the dependency array.  react-hooks/exhaustive-deps
8:33:09 PM: 43:6  Warning: React Hook useEffect has a missing dependency: 'fetchMapUri'. Either include it or remove the dependency array.  react-hooks/exhaustive-deps
8:33:09 PM: ./pages/login.tsx
8:33:09 PM: 27:51  Warning: 'formApi' is defined but never used.  @typescript-eslint/no-unused-vars
8:33:09 PM: 27:51  Warning: 'formApi' is defined but never used.  no-unused-vars
8:33:09 PM: ./pages/signup/index.tsx
8:33:09 PM: 28:52  Warning: 'formApi' is defined but never used.  @typescript-eslint/no-unused-vars
8:33:09 PM: 28:52  Warning: 'formApi' is defined but never used.  no-unused-vars
8:33:09 PM: ./components/Fields/AutoCompleteField/index.tsx
8:33:09 PM: 5:15  Warning: Don't use `{}` as a type. `{}` actually means "any non-nullish value".- If you want a type meaning "any object", you probably want `object` instead.
8:33:09 PM: - If you want a type meaning "any value", you probably want `unknown` instead.
8:33:09 PM: - If you want a type meaning "empty object", you probably want `Record<string, never>` instead.  @typescript-eslint/ban-types
8:33:09 PM: 6:15  Warning: Don't use `{}` as a type. `{}` actually means "any non-nullish value".- If you want a type meaning "any object", you probably want `object` instead.
8:33:09 PM: - If you want a type meaning "any value", you probably want `unknown` instead.
8:33:09 PM: - If you want a type meaning "empty object", you probably want `Record<string, never>` instead.  @typescript-eslint/ban-types
8:33:09 PM: 7:24  Warning: Unexpected any. Specify a different type.  @typescript-eslint/no-explicit-any
8:33:09 PM: 7:32  Warning: Unexpected any. Specify a different type.  @typescript-eslint/no-explicit-any
8:33:09 PM: 8:10  Warning: Unexpected any. Specify a different type.  @typescript-eslint/no-explicit-any
8:33:09 PM: 10:36  Warning: Unexpected any. Specify a different type.  @typescript-eslint/no-explicit-any
8:33:09 PM: 11:19  Warning: Unexpected any. Specify a different type.  @typescript-eslint/no-explicit-any
8:33:09 PM: 12:23  Warning: Unexpected any. Specify a different type.  @typescript-eslint/no-explicit-any
8:33:09 PM: ./components/Modals/Modal.tsx
8:33:09 PM: 15:3  Warning: 'className' is defined but never used.  @typescript-eslint/no-unused-vars
8:33:09 PM: 15:3  Warning: 'className' is defined but never used.  no-unused-vars
8:33:09 PM: 16:3  Warning: 'isOpen' is defined but never used.  @typescript-eslint/no-unused-vars
8:33:09 PM: 16:3  Warning: 'isOpen' is defined but never used.  no-unused-vars
8:33:09 PM: 18:3  Warning: 'contentLabel' is defined but never used.  @typescript-eslint/no-unused-vars
8:33:09 PM: 18:3  Warning: 'contentLabel' is defined but never used.  no-unused-vars
8:33:09 PM: 19:3  Warning: 'overlayClassName' is defined but never used.  @typescript-eslint/no-unused-vars
8:33:09 PM: 19:3  Warning: 'overlayClassName' is defined but never used.  no-unused-vars
8:33:09 PM: ./components/Transitions/Transition.tsx
8:33:09 PM: 17:21  Warning: Unexpected any. Specify a different type.  @typescript-eslint/no-explicit-any
8:33:09 PM: 17:29  Warning: Unexpected any. Specify a different type.  @typescript-eslint/no-explicit-any
8:33:09 PM: 19:14  Warning: Don't use `{}` as a type. `{}` actually means "any non-nullish value".- If you want a type meaning "any object", you probably want `object` instead.
8:33:09 PM: - If you want a type meaning "any value", you probably want `unknown` instead.
8:33:09 PM: - If you want a type meaning "empty object", you probably want `Record<string, never>` instead.  @typescript-eslint/ban-types
8:33:09 PM: info  - Need to disable some ESLint rules? Learn more here: https://nextjs.org/docs/basic-features/eslint#disabling-rules
8:33:10 PM: info  - Creating an optimized production build...
8:33:10 PM: > [PWA] Compile client (static)
8:33:10 PM: > [PWA] Auto register service worker with: /opt/build/repo/node_modules/next-pwa/register.js
8:33:10 PM: > [PWA] Service worker: /opt/build/repo/public/sw.js
8:33:10 PM: > [PWA]   url: /m/sw.js
8:33:10 PM: > [PWA]   scope: /m/
8:33:10 PM: > [PWA] Compile server
8:33:10 PM: > [PWA] Compile server
8:33:17 PM: warn  - Compiled with warnings
8:33:17 PM: /m/_next/static/media/welcomeBg.f146206d.png is 2.36 MB, and won't be precached. Configure maximumFileSizeToCacheInBytes to change this limit.
8:33:17 PM: /m/_next/static/chunks/632.e6fd46b9a0f21244.js is 3.01 MB, and won't be precached. Configure maximumFileSizeToCacheInBytes to change this limit.
8:33:17 PM: info  - Collecting page data...
8:33:19 PM: info  - Generating static pages (0/19)
8:33:19 PM: info  - Generating static pages (4/19)
8:33:20 PM: info  - Generating static pages (9/19)
8:33:20 PM: info  - Generating static pages (14/19)
8:33:20 PM: info  - Generating static pages (19/19)
8:33:20 PM: info  - Finalizing page optimization...
8:33:21 PM: Route (pages)                                                    Size     First Load JS
8:33:21 PM: ┌   /_app                                                        0 B             198 kB
8:33:21 PM: ├ ○ /404                                                         181 B           198 kB
8:33:21 PM: ├ λ /api/address_details                                         0 B             198 kB
8:33:21 PM: ├ λ /api/places                                                  0 B             198 kB
8:33:21 PM: ├ ○ /code-verify (348 ms)                                        8.13 kB         206 kB
8:33:21 PM: ├   └ css/37989bbc4933b185.css                                   1.1 kB
8:33:21 PM: ├ ○ /go-to-app (991 ms)                                          4.38 kB         204 kB
8:33:21 PM: ├   └ css/d55d30bb53840014.css                                   1.05 kB
8:33:21 PM: ├ ○ /kyc (1174 ms)                                               1.93 kB         204 kB
8:33:21 PM: ├   └ css/bf652f6107787efd.css                                   1.23 kB
8:33:21 PM: ├ ○ /kyc/address (1184 ms)                                       33.9 kB         243 kB
8:33:21 PM: ├   └ css/03d69800530efb10.css                                   825 B
8:33:21 PM: ├ ○ /kyc/address/confirm (1080 ms)                               7.9 kB          215 kB
8:33:21 PM: ├   └ css/554e5ff40b8eaac4.css                                   988 B
8:33:21 PM: ├ ○ /kyc/address/manual (1217 ms)                                6.62 kB         204 kB
8:33:21 PM: ├   └ css/6a6bb1b50a96d71b.css                                   1.01 kB
8:33:21 PM: ├ ○ /kyc/birth-date (998 ms)                                     3.82 kB         214 kB
8:33:21 PM: ├   └ css/ba9e0eab4fc5270e.css                                   1.15 kB
8:33:21 PM: ├ ○ /kyc/explain (1140 ms)                                       1.98 kB         204 kB
8:33:21 PM: ├   └ css/d3f455b57ae739b6.css                                   1.03 kB
8:33:21 PM: ├ ○ /kyc/ssn                                                     62.1 kB         271 kB
8:33:21 PM: ├   └ css/396e272b81ca43e9.css                                   1.18 kB
8:33:21 PM: ├ ○ /login (1029 ms)                                             2.41 kB         212 kB
8:33:21 PM: ├   └ css/daaa54b095605d1b.css                                   1.1 kB
8:33:21 PM: ├ ○ /magic-link                                                  994 B           203 kB
8:33:21 PM: ├   └ css/fc580b41d8ad1e5c.css                                   962 B
8:33:21 PM: ├ ○ /signup (1075 ms)                                            2.44 kB         212 kB
8:33:21 PM: ├   └ css/afea8df2ba5cd42e.css                                   1.09 kB
8:33:21 PM: ├ ○ /signup/full-name (1101 ms)                                  4.26 kB         204 kB
8:33:21 PM: ├   └ css/a16f116a010bd56a.css                                   1.04 kB
8:33:21 PM: ├ ● /signup/full-name/privacy-policy (ISR: 59 Seconds) (373 ms)  602 B           203 kB
8:33:21 PM: ├   └ css/14295534750d3749.css                                   717 B
8:33:21 PM: ├ ● /signup/full-name/terms (ISR: 59 Seconds) (475 ms)           591 B           203 kB
8:33:21 PM: ├   └ css/78d11a00e664cee7.css                                   707 B
8:33:21 PM: ├ ○ /signup/notification (1092 ms)                               115 kB          313 kB
8:33:21 PM: ├   └ css/1a28d8a7bfcf1f9a.css                                   1.2 kB
8:33:21 PM: └ ○ /welcome (1002 ms)                                           1.8 kB          201 kB
8:33:21 PM:     └ css/6b86024fe539cfeb.css                                   968 B
8:33:21 PM: + First Load JS shared by all                                    200 kB
8:33:21 PM:   ├ chunks/framework-3b5a00d5d7e8d93b.js                         45.4 kB
8:33:21 PM:   ├ chunks/main-80ef9c369722fb14.js                              28.9 kB
8:33:21 PM:   ├ chunks/pages/_app-d13075890969c699.js                        121 kB
8:33:21 PM:   ├ chunks/webpack-f1c0fa098d19c142.js                           2.4 kB
8:33:21 PM:   └ css/e60ac3e144f7cbff.css                                     1.96 kB
8:33:21 PM: λ  (Server)  server-side renders at runtime (uses getInitialProps or getServerSideProps)
8:33:21 PM: ○  (Static)  automatically rendered as static HTML (uses no initial props)
8:33:21 PM: ●  (SSG)     automatically generated as static HTML + JSON (uses getStaticProps)
8:33:21 PM:    (ISR)     incremental static regeneration (uses revalidate in getStaticProps)
8:33:21 PM: ​
8:33:21 PM: (build.command completed in 15.3s)
8:33:21 PM: ​
8:33:21 PM:   3. @netlify/plugin-nextjs (onBuild event)                     
8:33:21 PM: ────────────────────────────────────────────────────────────────
8:33:21 PM: ​
8:33:21 PM: { functionsDir: '/opt/build/repo/.netlify/functions-internal' }
8:33:21 PM: Patching /opt/build/repo/node_modules/next/dist/server/base-server.js
8:33:21 PM: Done
8:33:21 PM: Patching /opt/build/repo/node_modules/next/dist/server/next-server.js
8:33:21 PM: Done
8:33:21 PM: Moving static page files to serve from CDN...
8:33:21 PM: Moved 15 files
8:33:21 PM: The following routes use "revalidate" values of under 60 seconds, which is not supported.
8:33:21 PM: They will use a revalidate time of 60 seconds instead.
8:33:21 PM: ┌─────────┬────────────────────────────────────┬────────────┐
8:33:21 PM: │ (index) │               Route                │ Revalidate │
8:33:21 PM: ├─────────┼────────────────────────────────────┼────────────┤
8:33:21 PM: │    0    │     '/signup/full-name/terms'      │     59     │
8:33:21 PM: │    1    │ '/signup/full-name/privacy-policy' │     59     │
8:33:21 PM: └─────────┴────────────────────────────────────┴────────────┘
8:33:21 PM: Using Netlify Edge Functions for image format detection. Set env var "NEXT_DISABLE_EDGE_IMAGES=true" to disable.
8:33:21 PM: Netlify configuration property "redirects" value changed to [
8:33:21 PM:   {
8:33:21 PM:     from: '/',
8:33:21 PM:     query: {},
8:33:21 PM:     to: '/m',
8:33:21 PM:     status: 301,
8:33:21 PM:     force: true,
8:33:21 PM:     conditions: {},
8:33:21 PM:     headers: {}
8:33:21 PM:   },
8:33:21 PM:   { from: '/m/_next/static/*', to: '/static/:splat', status: 200 },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/_next/image*',
8:33:21 PM:     query: { url: ':url', w: ':width', q: ':quality' },
8:33:21 PM:     to: '/m/_ipx/w_:width,q_:quality/:url',
8:33:21 PM:     status: 301
8:33:21 PM:   },
8:33:21 PM:   { from: '/m/_ipx/*', to: '/.netlify/builders/_ipx', status: 200 },
8:33:21 PM:   {
8:33:21 PM:     from: '/_next/static/image/*',
8:33:21 PM:     to: '/static/image/:splat',
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   { from: '/m/cache/*', to: '/404.html', status: 404, force: true },
8:33:21 PM:   { from: '/m/server/*', to: '/404.html', status: 404, force: true },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/serverless/*',
8:33:21 PM:     to: '/404.html',
8:33:21 PM:     status: 404,
8:33:21 PM:     force: true
8:33:21 PM:   },
8:33:21 PM:   { from: '/m/trace', to: '/404.html', status: 404, force: true },
8:33:21 PM:   { from: '/m/traces', to: '/404.html', status: 404, force: true },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/routes-manifest.json',
8:33:21 PM:     to: '/404.html',
8:33:21 PM:     status: 404,
8:33:21 PM:     force: true
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/build-manifest.json',
8:33:21 PM:     to: '/404.html',
8:33:21 PM:     status: 404,
8:33:21 PM:     force: true
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/prerender-manifest.json',
8:33:21 PM:     to: '/404.html',
8:33:21 PM:     status: 404,
8:33:21 PM:     force: true
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/react-loadable-manifest.json',
8:33:21 PM:     to: '/404.html',
8:33:21 PM:     status: 404,
8:33:21 PM:     force: true
8:33:21 PM:   },
8:33:21 PM:   { from: '/m/BUILD_ID', to: '/404.html', status: 404, force: true },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/api/*',
8:33:21 PM:     to: '/.netlify/functions/___netlify-handler',
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/manifest.json',
8:33:21 PM:     to: '/m/manifest.json',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/sw.js',
8:33:21 PM:     to: '/m/sw.js',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/workbox-588899ac.js',
8:33:21 PM:     to: '/m/workbox-588899ac.js',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/assets/phone-mockup.svg',
8:33:21 PM:     to: '/m/assets/phone-mockup.svg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/assets/thumbnail.png',
8:33:21 PM:     to: '/m/assets/thumbnail.png',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/favicon/android-icon-144x144.png',
8:33:21 PM:     to: '/m/favicon/android-icon-144x144.png',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/favicon/android-icon-192x192.png',
8:33:21 PM:     to: '/m/favicon/android-icon-192x192.png',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/favicon/android-icon-36x36.png',
8:33:21 PM:     to: '/m/favicon/android-icon-36x36.png',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/favicon/android-icon-48x48.png',
8:33:21 PM:     to: '/m/favicon/android-icon-48x48.png',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/favicon/android-icon-512x512.png',
8:33:21 PM:     to: '/m/favicon/android-icon-512x512.png',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/favicon/android-icon-72x72.png',
8:33:21 PM:     to: '/m/favicon/android-icon-72x72.png',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/favicon/android-icon-96x96.png',
8:33:21 PM:     to: '/m/favicon/android-icon-96x96.png',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/favicon/apple-icon-114x114.png',
8:33:21 PM:     to: '/m/favicon/apple-icon-114x114.png',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/favicon/apple-icon-120x120.png',
8:33:21 PM:     to: '/m/favicon/apple-icon-120x120.png',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/favicon/apple-icon-144x144.png',
8:33:21 PM:     to: '/m/favicon/apple-icon-144x144.png',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/favicon/apple-icon-152x152.png',
8:33:21 PM:     to: '/m/favicon/apple-icon-152x152.png',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/favicon/apple-icon-180x180.png',
8:33:21 PM:     to: '/m/favicon/apple-icon-180x180.png',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/favicon/apple-icon-57x57.png',
8:33:21 PM:     to: '/m/favicon/apple-icon-57x57.png',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/favicon/apple-icon-60x60.png',
8:33:21 PM:     to: '/m/favicon/apple-icon-60x60.png',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/favicon/apple-icon-72x72.png',
8:33:21 PM:     to: '/m/favicon/apple-icon-72x72.png',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/favicon/apple-icon-76x76.png',
8:33:21 PM:     to: '/m/favicon/apple-icon-76x76.png',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/favicon/apple-icon-precomposed.png',
8:33:21 PM:     to: '/m/favicon/apple-icon-precomposed.png',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/favicon/apple-icon.png',
8:33:21 PM:     to: '/m/favicon/apple-icon.png',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/favicon/browserconfig.xml',
8:33:21 PM:     to: '/m/favicon/browserconfig.xml',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/favicon/favicon-16x16.png',
8:33:21 PM:     to: '/m/favicon/favicon-16x16.png',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/favicon/favicon-32x32.png',
8:33:21 PM:     to: '/m/favicon/favicon-32x32.png',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/favicon/favicon-96x96.png',
8:33:21 PM:     to: '/m/favicon/favicon-96x96.png',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/favicon/favicon.ico',
8:33:21 PM:     to: '/m/favicon/favicon.ico',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/favicon/ms-icon-144x144.png',
8:33:21 PM:     to: '/m/favicon/ms-icon-144x144.png',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/favicon/ms-icon-150x150.png',
8:33:21 PM:     to: '/m/favicon/ms-icon-150x150.png',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/favicon/ms-icon-310x310.png',
8:33:21 PM:     to: '/m/favicon/ms-icon-310x310.png',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/favicon/ms-icon-70x70.png',
8:33:21 PM:     to: '/m/favicon/ms-icon-70x70.png',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/splash/apple-splash-1125-2436.jpg',
8:33:21 PM:     to: '/m/splash/apple-splash-1125-2436.jpg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/splash/apple-splash-1170-2532.jpg',
8:33:21 PM:     to: '/m/splash/apple-splash-1170-2532.jpg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/splash/apple-splash-1179-2556.jpg',
8:33:21 PM:     to: '/m/splash/apple-splash-1179-2556.jpg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/splash/apple-splash-1242-2208.jpg',
8:33:21 PM:     to: '/m/splash/apple-splash-1242-2208.jpg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/splash/apple-splash-1242-2688.jpg',
8:33:21 PM:     to: '/m/splash/apple-splash-1242-2688.jpg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/splash/apple-splash-1284-2778.jpg',
8:33:21 PM:     to: '/m/splash/apple-splash-1284-2778.jpg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/splash/apple-splash-1290-2796.jpg',
8:33:21 PM:     to: '/m/splash/apple-splash-1290-2796.jpg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/splash/apple-splash-1536-2048.jpg',
8:33:21 PM:     to: '/m/splash/apple-splash-1536-2048.jpg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/splash/apple-splash-1620-2160.jpg',
8:33:21 PM:     to: '/m/splash/apple-splash-1620-2160.jpg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/splash/apple-splash-1668-2224.jpg',
8:33:21 PM:     to: '/m/splash/apple-splash-1668-2224.jpg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/splash/apple-splash-1668-2388.jpg',
8:33:21 PM:     to: '/m/splash/apple-splash-1668-2388.jpg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/splash/apple-splash-2048-2732.jpg',
8:33:21 PM:     to: '/m/splash/apple-splash-2048-2732.jpg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/splash/apple-splash-640-1136.jpg',
8:33:21 PM:     to: '/m/splash/apple-splash-640-1136.jpg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/splash/apple-splash-750-1334.jpg',
8:33:21 PM:     to: '/m/splash/apple-splash-750-1334.jpg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/splash/apple-splash-828-1792.jpg',
8:33:21 PM:     to: '/m/splash/apple-splash-828-1792.jpg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/splash/manifest-icon-192.maskable.png',
8:33:21 PM:     to: '/m/splash/manifest-icon-192.maskable.png',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/splash/manifest-icon-512.maskable.png',
8:33:21 PM:     to: '/m/splash/manifest-icon-512.maskable.png',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/assets/animations/home_loader.json',
8:33:21 PM:     to: '/m/assets/animations/home_loader.json',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/assets/animations/kyc-welcome-old.json',
8:33:21 PM:     to: '/m/assets/animations/kyc-welcome-old.json',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/assets/animations/kyc-welcome.json',
8:33:21 PM:     to: '/m/assets/animations/kyc-welcome.json',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/assets/animations/magic-link-old.json',
8:33:21 PM:     to: '/m/assets/animations/magic-link-old.json',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/assets/animations/magic-link.json',
8:33:21 PM:     to: '/m/assets/animations/magic-link.json',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/assets/icons/Icon-full-bg.svg',
8:33:21 PM:     to: '/m/assets/icons/Icon-full-bg.svg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/assets/icons/arrow_back_icon.svg',
8:33:21 PM:     to: '/m/assets/icons/arrow_back_icon.svg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/assets/icons/arrow_next_small_icon.svg',
8:33:21 PM:     to: '/m/assets/icons/arrow_next_small_icon.svg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/assets/icons/back_button.svg',
8:33:21 PM:     to: '/m/assets/icons/back_button.svg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/assets/icons/close_icon.svg',
8:33:21 PM:     to: '/m/assets/icons/close_icon.svg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/assets/icons/disabled_eye_pass.svg',
8:33:21 PM:     to: '/m/assets/icons/disabled_eye_pass.svg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/assets/icons/download_icon.svg',
8:33:21 PM:     to: '/m/assets/icons/download_icon.svg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/assets/icons/eye_pass.svg',
8:33:21 PM:     to: '/m/assets/icons/eye_pass.svg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/assets/icons/filter_icon.svg',
8:33:21 PM:     to: '/m/assets/icons/filter_icon.svg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/assets/icons/landa_logo_icon.svg',
8:33:21 PM:     to: '/m/assets/icons/landa_logo_icon.svg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/assets/icons/lock_icon.svg',
8:33:21 PM:     to: '/m/assets/icons/lock_icon.svg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/assets/icons/map_icon.svg',
8:33:21 PM:     to: '/m/assets/icons/map_icon.svg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/assets/icons/search.svg',
8:33:21 PM:     to: '/m/assets/icons/search.svg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/assets/icons/search_icon.svg',
8:33:21 PM:     to: '/m/assets/icons/search_icon.svg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/assets/icons/send_icon.svg',
8:33:21 PM:     to: '/m/assets/icons/send_icon.svg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/assets/icons/shield.svg',
8:33:21 PM:     to: '/m/assets/icons/shield.svg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/assets/kyc/edit_icon.svg',
8:33:21 PM:     to: '/m/assets/kyc/edit_icon.svg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/assets/kyc/kyc_explain.svg',
8:33:21 PM:     to: '/m/assets/kyc/kyc_explain.svg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/assets/kyc/kyc_main.svg',
8:33:21 PM:     to: '/m/assets/kyc/kyc_main.svg',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/assets/kyc/test.png',
8:33:21 PM:     to: '/m/assets/kyc/test.png',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/assets/welcome/welcomeBg.png',
8:33:21 PM:     to: '/m/assets/welcome/welcomeBg.png',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/assets/welcome/welcomeFg.png',
8:33:21 PM:     to: '/m/assets/welcome/welcomeFg.png',
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     status: 200
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/*',
8:33:21 PM:     to: '/.netlify/functions/___netlify-handler',
8:33:21 PM:     status: 200,
8:33:21 PM:     conditions: { Cookie: [Array] },
8:33:21 PM:     force: true
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/_next/data/WIaQpNUxTtuLRxZilPKLH/signup/full-name/terms.json',
8:33:21 PM:     to: '/.netlify/builders/___netlify-odb-handler',
8:33:21 PM:     status: 200,
8:33:21 PM:     force: true
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/signup/full-name/terms',
8:33:21 PM:     to: '/.netlify/builders/___netlify-odb-handler',
8:33:21 PM:     status: 200,
8:33:21 PM:     force: true
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/_next/data/WIaQpNUxTtuLRxZilPKLH/signup/full-name/privacy-policy.json',
8:33:21 PM:     to: '/.netlify/builders/___netlify-odb-handler',
8:33:21 PM:     status: 200,
8:33:21 PM:     force: true
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/signup/full-name/privacy-policy',
8:33:21 PM:     to: '/.netlify/builders/___netlify-odb-handler',
8:33:21 PM:     status: 200,
8:33:21 PM:     force: true
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/_next/data/WIaQpNUxTtuLRxZilPKLH/code-verify.json',
8:33:21 PM:     to: '/.netlify/functions/___netlify-handler',
8:33:21 PM:     status: 200,
8:33:21 PM:     force: false
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/code-verify',
8:33:21 PM:     to: '/.netlify/functions/___netlify-handler',
8:33:21 PM:     status: 200,
8:33:21 PM:     force: false
8:33:21 PM:   },
8:33:21 PM:   {
8:33:21 PM:     from: '/m/_next/data/WIaQpNUxTtuLRxZilPKLH/go-to-app.json',
8:33:21 PM:     to: '/.netlify/functions/___netlify-handler',
8:33:21 PM:     status: 200,
8:33:21 PM:     force: false
8:33:21 PM:   },
8:33:21 PM:   ... 28 more items
8:33:21 PM: ].
8:33:21 PM: ​
8:33:21 PM: (@netlify/plugin-nextjs onBuild completed in 156ms)
8:33:21 PM: ​
8:33:21 PM:   4. Functions bundling                                         
8:33:21 PM: ────────────────────────────────────────────────────────────────
8:33:21 PM: ​
8:33:21 PM: Packaging Functions from .netlify/functions-internal directory:
8:33:21 PM:  - ___netlify-handler/___netlify-handler.js
8:33:21 PM:  - ___netlify-odb-handler/___netlify-odb-handler.js
8:33:21 PM:  - _ipx/_ipx.js
8:33:21 PM: ​
8:33:40 PM: ​
8:33:40 PM: (Functions bundling completed in 19.1s)
8:33:40 PM: ​
8:33:40 PM:   5. Edge Functions bundling                                    
8:33:40 PM: ────────────────────────────────────────────────────────────────
8:33:40 PM: ​
8:33:40 PM: Packaging Edge Functions from .netlify/edge-functions directory:
8:33:40 PM:  - ipx
8:33:41 PM: ​
8:33:41 PM: (Edge Functions bundling completed in 744ms)
8:33:41 PM: ​
8:33:41 PM:   6. @netlify/plugin-nextjs (onPostBuild event)                 
8:33:41 PM: ────────────────────────────────────────────────────────────────
8:33:41 PM: ​
8:33:41 PM: Next.js cache saved.
8:33:41 PM: ​
8:33:41 PM: (@netlify/plugin-nextjs onPostBuild completed in 238ms)
8:33:41 PM: ​
8:33:41 PM:   7. Deploy site                                                
8:33:41 PM: ────────────────────────────────────────────────────────────────
8:33:41 PM: ​
8:33:41 PM: Starting to deploy site from '.next'
8:33:41 PM: Creating deploy tree 
8:33:42 PM: 47 new files to upload
8:33:42 PM: 3 new functions to upload
8:33:51 PM: Section completed: deploying
8:33:51 PM: Site deploy was successfully initiated
8:33:51 PM: ​
8:33:51 PM: (Deploy site completed in 9.8s)
8:33:51 PM: ​
8:33:51 PM:   Netlify Build Complete                                        
8:33:51 PM: ────────────────────────────────────────────────────────────────
8:33:51 PM: ​
8:33:51 PM: (Netlify Build completed in 47s)
8:33:51 PM: Starting post processing
8:33:51 PM: Caching artifacts
8:33:51 PM: Started saving node modules
8:33:51 PM: Finished saving node modules
8:33:51 PM: Started saving build plugins
8:33:51 PM: Finished saving build plugins
8:33:51 PM: Post processing - HTML
8:33:51 PM: Started saving pip cache
8:33:51 PM: Finished saving pip cache
8:33:51 PM: Started saving emacs cask dependencies
8:33:51 PM: Finished saving emacs cask dependencies
8:33:51 PM: Started saving maven dependencies
8:33:51 PM: Finished saving maven dependencies
8:33:51 PM: Started saving boot dependencies
8:33:51 PM: Finished saving boot dependencies
8:33:51 PM: Started saving rust rustup cache
8:33:51 PM: Finished saving rust rustup cache
8:33:51 PM: Started saving go dependencies
8:33:51 PM: Finished saving go dependencies
8:33:51 PM: Build script success
8:33:51 PM: Section completed: building
8:33:52 PM: Post processing - header rules
8:33:52 PM: Uploading Cache of size 338.0MB
8:33:52 PM: Post processing - redirect rules
8:33:53 PM: Post processing done
8:33:53 PM: Section completed: postprocessing
8:33:56 PM: Section completed: cleanup
8:33:56 PM: Finished processing build request in 1m4.111789119s
8:33:56 PM: Site is live ✨

Function logs

No response

.next JSON files

No response

@Flaysh Flaysh added the type: bug code to address defects in shipped code label Dec 21, 2022
@Flaysh Flaysh changed the title [Bug]: [Bug]: Some of public folder assets is not accessable when deploying NextJS app with basePath Dec 21, 2022
@Flaysh Flaysh changed the title [Bug]: Some of public folder assets is not accessable when deploying NextJS app with basePath [Help wanted]: Some of public folder assets is not accessable when deploying NextJS app with basePath Dec 21, 2022
@ascorbic ascorbic added the status: confirmed A maintainer has reproduced the issue label Dec 21, 2022
@ascorbic ascorbic self-assigned this Dec 21, 2022
@bkbooth
Copy link

bkbooth commented Dec 21, 2022

I'm hitting this issue too, been looking around for a fix today.

It looks like this GH issue and the WIP PR are both very fresh. What's a normal cadence for getting a fix like this into prod? Hours? Days?

In the meantime is there something I can do to fix/workaround?

@bkbooth
Copy link

bkbooth commented Dec 21, 2022

@Flaysh I'm not sure if this works in your setup, but I was able to temp workaround this by using Netlify redirects/proxy in the parent site. Since both my parent site and my subpath site (the one using Next.js basePath) are on Netlify I'm proxying from the parent site to the subpath site. So as well as the primary path redirect, I added some temp redirects to handle everything in the Next.js /public folder.

# _redirects

# TEMP fixes for /projects public assets
/projects/fonts/*  https://my-subpath-site.netlify.app/fonts/:splat  200
/projects/icons/*  https://my-subpath-site.netlify.app/icons/:splat  200

# Everything under /projects is served by a different Netlify app
/projects/*  https://my-subpath-site.netlify.app/projects/:splat  200

@kodiakhq kodiakhq bot closed this as completed in #1850 Dec 22, 2022
@ascorbic
Copy link
Contributor

Hi. We're not releasing anything until the New Year right now, but I can put out a tagged release later if you want to manually install the runtime. The workaround with redirects looks solid though.

@Flaysh
Copy link
Author

Flaysh commented Dec 22, 2022

ok. i will do the redirects for now.
i have service worker and manifest file under public, so should I put then under a directory of itself?
image
how would u do it in a netlify.toml file?
can you notify me when the new version is up?

@bkbooth
Copy link

bkbooth commented Dec 22, 2022

It's a bit messy to list them all, but you can proxy individual files too:

/projects/manifest.json  https://my-subpath-site.netlify.app/manifest.json  200

It's not ideal, but it's temp until this fix is released.

@ascorbic what's involved with manually installing the runtime? Just install a version locally in my project and the Netlify deployment engine will use my local version? I'm interested to try it, but proxy workaround is working well enough for now.

@ascorbic
Copy link
Contributor

@bkbooth you need to npm/yarn/pnpm install @netlify/plugin-nextjs@appdir in your project, and Netlify will use that version

@bkbooth
Copy link

bkbooth commented Dec 22, 2022

Awesome, just tested this on my staging site and the fix & tagged release are working perfectly 🙌 (not using any proxied requests on the staging deploy). I'll apply this to my production release too now.

Thanks so much for the quick fix and for doing the tagged release!

Merry Christmas (if you celebrate) and Happy New Year!

@Flaysh
Copy link
Author

Flaysh commented Dec 23, 2022

It's a bit messy to list them all, but you can proxy individual files too:

/projects/manifest.json  https://my-subpath-site.netlify.app/manifest.json  200

It's not ideal, but it's temp until this fix is released.

@ascorbic what's involved with manually installing the runtime? Just install a version locally in my project and the Netlify deployment engine will use my local version. I'm interested to try it, but proxy workaround is working well enough for now.

I tried it right now and didn't seem to work in my case...

Will try to install @netlify/plugin-nextjs@appdir now :)

if I understand right, when the main version is out (in a week or two) I can remove it from my dependencies?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
status: confirmed A maintainer has reproduced the issue type: bug code to address defects in shipped code
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants