Skip to content
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

clean up async module loading #17870

Closed
wants to merge 2 commits into from
Closed

Conversation

Janpot
Copy link
Contributor

@Janpot Janpot commented Oct 14, 2020

Realized that with a small refactor, #17590 can be implemented a lot cleaner.

Basically, we should just re-export the whole page and app module promise from the serverless bundle, instead of trying re-exporting the individual exports from those modules as maybe-promises

@ijjk
Copy link
Member

ijjk commented Oct 14, 2020

Failing test suites

Commit: 975e36c

test/integration/auto-export-serverless-error/test/index.test.js

  • Auto Export Error Serverless > fails to emit the page
Expand output

● Auto Export Error Serverless › fails to emit the page

expect(received).toContain(expected) // indexOf

Expected substring: "ReferenceError"
Received string:    "warn  - Compiled with warnings·
/home/runner/work/next.js/next.js/packages/next/dist/next-server/server/load-components.js
Critical dependency: the request of a dependency is an expression·
/home/runner/work/next.js/next.js/packages/next/dist/next-server/server/load-components.js
Critical dependency: the request of a dependency is an expression·
/home/runner/work/next.js/next.js/packages/next/dist/next-server/server/require.js
Critical dependency: the request of a dependency is an expression·
/home/runner/work/next.js/next.js/packages/next/dist/next-server/server/require.js
Critical dependency: the request of a dependency is an expression·
/home/runner/work/next.js/next.js/packages/next/dist/next-server/server/require.js
Critical dependency: the request of a dependency is an expression··
Error occurred prerendering page \"/\". Read more: https://err.sh/next.js/prerender-error
TypeError: renderMethod is not a function

  23 | if(!options.buildExport&&prerenderManifest){await Promise.all(Object.keys(prerenderManifest.routes).map(async route=>{const{srcRoute}=prerenderManifest.routes[route];const pageName=srcRoute||route;const pagePath=(0,_require.getPagePath)(pageName,distDir,isLikeServerless);const distPagesDir=(0,_path.join)(pagePath,// strip leading / and then recurse number of nested dirs
  24 | // to place from base folder
> 25 | pageName.substr(1).split('/').map(()=>'..').join('/'));route=(0,_normalizePagePath.normalizePagePath)(route);const orig=(0,_path.join)(distPagesDir,route);const htmlDest=(0,_path.join)(outDir,`${route}${subFolders&&route!=='/index'?`${_path.sep}index`:''}.html`);const ampHtmlDest=(0,_path.join)(outDir,`${route}.amp${subFolders?`${_path.sep}index`:''}.html`);const jsonDest=(0,_path.join)(pagesDataDir,`${route}.json`);await _fs.promises.mkdir((0,_path.dirname)(htmlDest),{recursive:true});await _fs.promises.mkdir((0,_path.dirname)(jsonDest),{recursive:true});await _fs.promises.copyFile(`${orig}.html`,htmlDest);await _fs.promises.copyFile(`${orig}.json`,jsonDest);if(await exists(`${orig}.amp.html`)){await _fs.promises.mkdir((0,_path.dirname)(ampHtmlDest),{recursive:true});await _fs.promises.copyFile(`${orig}.amp.html`,ampHtmlDest);}}));}if(Object.keys(ampValidations).length){console.log((0,_index.formatAmpMessages)(ampValidations));}if(hadValidationError){throw new Error(`AMP Validation caused the export to fail. https://err.sh/vercel/next.js/amp-export-validation`);}if(renderError){throw new Error(`Export encountered errors on following paths:\n\t${errorPaths.sort().join('\n\t')}`);}(0,_fs.writeFileSync)((0,_path.join)(distDir,_constants2.EXPORT_DETAIL),JSON.stringify({version:1,outDirectory:outDir,success:true}),'utf8');if(telemetry){await telemetry.flush();}}
     |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               ^
  26 | //# sourceMappingURL=index.js.map

  at Object.exportPage [as default] (../packages/next/dist/export/worker.js:12:98)·
  Error occurred prerendering page \"/404\". Read more: https://err.sh/next.js/prerender-error
  TypeError: renderMethod is not a function
  at Object.exportPage [as default] (../packages/next/dist/export/worker.js:12:98)·
  > Build error occurred
  Error: Export encountered errors on following paths:
  	/
  	/404
  at exportApp (../packages/next/dist/export/index.js:25:1103)
  at async build (../packages/next/dist/build/index.js:39:69)
  "
  at Object.<anonymous> (integration/auto-export-serverless-error/test/index.test.js:19:20)

test/integration/404-page-ssg/test/index.test.js

  • 404 Page Support SSG > serverless mode > should build successfully
  • 404 Page Support SSG > serverless mode > should respond to 404 correctly
  • 404 Page Support SSG > serverless mode > should render error correctly
  • 404 Page Support SSG > serverless mode > should not show an error in the logs for 404 SSG
  • 404 Page Support SSG > serverless mode > should render index page normal
  • 404 Page Support SSG > serverless mode > should not revalidate custom 404 page
Expand output

● 404 Page Support SSG › serverless mode › should build successfully

expect(received).toBe(expected) // Object.is equality

Expected: 0
Received: 1

  139 |       })
  140 | 
> 141 |       expect(code).toBe(0)
      |                    ^
  142 |       expect(buildStderr).not.toMatch(gip404Err)
  143 |       expect(buildStdout).not.toMatch(gip404Err)
  144 | 

  at Object.<anonymous> (integration/404-page-ssg/test/index.test.js:141:20)

● 404 Page Support SSG › serverless mode › should respond to 404 correctly

FetchError: request to http://localhost:35299/404 failed, reason: connect ECONNREFUSED 127.0.0.1:35299

  at ClientRequest.<anonymous> (../node_modules/node-fetch/lib/index.js:1461:11)

● 404 Page Support SSG › serverless mode › should render error correctly

FetchError: request to http://localhost:35299/err failed, reason: connect ECONNREFUSED 127.0.0.1:35299

  at ClientRequest.<anonymous> (../node_modules/node-fetch/lib/index.js:1461:11)

● 404 Page Support SSG › serverless mode › should not show an error in the logs for 404 SSG

FetchError: request to http://localhost:35299/non-existent failed, reason: connect ECONNREFUSED 127.0.0.1:35299

  at ClientRequest.<anonymous> (../node_modules/node-fetch/lib/index.js:1461:11)

● 404 Page Support SSG › serverless mode › should render index page normal

FetchError: request to http://localhost:35299/ failed, reason: connect ECONNREFUSED 127.0.0.1:35299

  at ClientRequest.<anonymous> (../node_modules/node-fetch/lib/index.js:1461:11)

● 404 Page Support SSG › serverless mode › should not revalidate custom 404 page

FetchError: request to http://localhost:35299/non-existent failed, reason: connect ECONNREFUSED 127.0.0.1:35299

  at ClientRequest.<anonymous> (../node_modules/node-fetch/lib/index.js:1461:11)

test/integration/404-page-custom-error/test/index.test.js

  • Default 404 Page with custom _error > serverless mode > should build successfully
  • Default 404 Page with custom _error > serverless mode > should respond to 404 correctly
  • Default 404 Page with custom _error > serverless mode > should render error correctly
  • Default 404 Page with custom _error > serverless mode > should render index page normal
Expand output

● Default 404 Page with custom _error › serverless mode › should build successfully

expect(received).toBe(expected) // Object.is equality

Expected: 0
Received: 1

  92 |       })
  93 | 
> 94 |       expect(code).toBe(0)
     |                    ^
  95 | 
  96 |       appPort = await findPort()
  97 |       app = await nextStart(appDir, appPort)

  at Object.<anonymous> (integration/404-page-custom-error/test/index.test.js:94:20)

● Default 404 Page with custom _error › serverless mode › should respond to 404 correctly

FetchError: request to http://localhost:45675/404 failed, reason: connect ECONNREFUSED 127.0.0.1:45675

  at ClientRequest.<anonymous> (../node_modules/node-fetch/lib/index.js:1461:11)

● Default 404 Page with custom _error › serverless mode › should render error correctly

FetchError: request to http://localhost:45675/err failed, reason: connect ECONNREFUSED 127.0.0.1:45675

  at ClientRequest.<anonymous> (../node_modules/node-fetch/lib/index.js:1461:11)

● Default 404 Page with custom _error › serverless mode › should render index page normal

FetchError: request to http://localhost:45675/ failed, reason: connect ECONNREFUSED 127.0.0.1:45675

  at ClientRequest.<anonymous> (../node_modules/node-fetch/lib/index.js:1461:11)

test/integration/api-support/test/index.test.js

  • API routes > Serverless support > should render page
  • API routes > Serverless support > should return 404 for undefined path
  • API routes > Serverless support > should not conflict with /api routes
  • API routes > Serverless support > should set cors headers when adding cors middleware
  • API routes > Serverless support > should work with index api
  • API routes > Serverless support > should return custom error
  • API routes > Serverless support > should throw Internal Server Error
  • API routes > Serverless support > should throw Internal Server Error (async)
  • API routes > Serverless support > should parse JSON body
  • API routes > Serverless support > should special-case empty JSON body
  • API routes > Serverless support > should support boolean for JSON in api page
  • API routes > Serverless support > should return error with invalid JSON
  • API routes > Serverless support > should return error exceeded body limit
  • API routes > Serverless support > should parse bigger body then 1mb
  • API routes > Serverless support > should support etag spec
  • API routes > Serverless support > should parse urlencoded body
  • API routes > Serverless support > should parse body in handler
  • API routes > Serverless support > should parse body with config
  • API routes > Serverless support > should show friendly error for invalid redirect
  • API routes > Serverless support > should show friendly error in case of passing null as first argument redirect
  • API routes > Serverless support > should redirect with status code 307
  • API routes > Serverless support > should redirect to login
  • API routes > Serverless support > should redirect with status code 301
  • API routes > Serverless support > should return empty query object
  • API routes > Serverless support > should parse query correctly
  • API routes > Serverless support > should return empty cookies object
  • API routes > Serverless support > should return cookies object
  • API routes > Serverless support > should return 200 on POST on pages
  • API routes > Serverless support > should return JSON on post on API
  • API routes > Serverless support > should return data on dynamic route
  • API routes > Serverless support > should work with dynamic params and search string
  • API routes > Serverless support > should work with dynamic params and search string like lambda
  • API routes > Serverless support > should prioritize a non-dynamic page
  • API routes > Serverless support > should return data on dynamic nested route
  • API routes > Serverless support > should 404 on optional dynamic api page
  • API routes > Serverless support > should return data on dynamic optional nested route
  • API routes > Serverless support > should work with child_process correctly
  • API routes > Serverless support > should show warning with next export
  • API routes > Serverless support > should build api routes
Expand output

● API routes › Serverless support › should render page

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should return 404 for undefined path

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should not conflict with /api routes

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should set cors headers when adding cors middleware

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should work with index api

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should return custom error

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should throw Internal Server Error

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should throw Internal Server Error (async)

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should parse JSON body

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should special-case empty JSON body

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should support boolean for JSON in api page

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should return error with invalid JSON

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should return error exceeded body limit

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should parse bigger body then 1mb

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should support etag spec

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should parse urlencoded body

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should parse body in handler

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should parse body with config

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should show friendly error for invalid redirect

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should show friendly error in case of passing null as first argument redirect

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should redirect with status code 307

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should redirect to login

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should redirect with status code 301

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should return empty query object

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should parse query correctly

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should return empty cookies object

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should return cookies object

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should return 200 on POST on pages

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should return JSON on post on API

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should return data on dynamic route

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should work with dynamic params and search string

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should work with dynamic params and search string like lambda

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should prioritize a non-dynamic page

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should return data on dynamic nested route

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should 404 on optional dynamic api page

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should return data on dynamic optional nested route

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should work with child_process correctly

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should show warning with next export

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● API routes › Serverless support › should build api routes

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

test/integration/custom-page-extension/test/index.test.js

  • Custom page extension > serverless mode > should work with normal page
  • Custom page extension > serverless mode > should work dynamic page
Expand output

● Custom page extension › serverless mode › should work with normal page

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● Custom page extension › serverless mode › should work dynamic page

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

test/integration/basepath/test/index.test.js

  • basePath serverless > should add basePath to routes-manifest
  • basePath serverless > should prefetch pages correctly when manually called
  • basePath serverless > should prefetch pages correctly in viewport with
  • basePath serverless > should 404 for public file without basePath
  • basePath serverless > should serve public file with basePath correctly
  • basePath serverless > should rewrite with basePath by default
  • basePath serverless > should not rewrite without basePath without disabling
  • basePath serverless > should not rewrite with basePath when set to false
  • basePath serverless > should rewrite without basePath when set to false
  • basePath serverless > should redirect with basePath by default
  • basePath serverless > should not redirect without basePath without disabling
  • basePath serverless > should not redirect with basePath when set to false
  • basePath serverless > should redirect without basePath when set to false
  • basePath serverless > should add header with basePath by default
  • basePath serverless > should not add header without basePath without disabling
  • basePath serverless > should not add header with basePath when set to false
  • basePath serverless > should add header without basePath when set to false
  • basePath serverless > should not update URL for a 404
  • basePath serverless > should handle 404 urls that start with basePath
  • basePath serverless > should navigate back to a non-basepath 404 that starts with basepath
  • basePath serverless > should update dynamic params after mount correctly
  • basePath serverless > should navigate to index page with getStaticProps
  • basePath serverless > should navigate to nested index page with getStaticProps
  • basePath serverless > should work with nested folder with same name as basePath
  • basePath serverless > should work with normal dynamic page
  • basePath serverless > should work with hash links
  • basePath serverless > should work with catch-all page
  • basePath serverless > should redirect trailing slash correctly
  • basePath serverless > should redirect trailing slash on root correctly
  • basePath serverless > should navigate an absolute url
  • basePath serverless > should navigate an absolute local url with basePath
  • basePath serverless > should navigate an absolute local url without basePath
  • basePath serverless > should 404 when manually adding basePath with
  • basePath serverless > should 404 when manually adding basePath with router.push
  • basePath serverless > should 404 when manually adding basePath with router.replace
  • basePath serverless > should show the hello page under the /docs prefix
  • basePath serverless > should have correct router paths on first load of /
  • basePath serverless > should have correct router paths on first load of /hello
  • basePath serverless > should fetch data for getStaticProps without reloading
  • basePath serverless > should fetch data for getServerSideProps without reloading
  • basePath serverless > should have correct href for a link
  • basePath serverless > should have correct href for a link to /
  • basePath serverless > should show 404 for page not under the /docs prefix
  • basePath serverless > should show the other-page page under the /docs prefix
  • basePath serverless > should have basePath field on Router
  • basePath serverless > should navigate to the page without refresh
  • basePath serverless > should use urls with basepath in router events
  • basePath serverless > should use urls with basepath in router events for hash changes
  • basePath serverless > should use urls with basepath in router events for cancelled routes
  • basePath serverless > should use urls with basepath in router events for failed route change
  • basePath serverless > should allow URL query strings without refresh
  • basePath serverless > should correctly replace state when same asPath but different url
  • basePath serverless > should always strip basePath in serverless-loader
Expand output

● basePath serverless › should add basePath to routes-manifest

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should prefetch pages correctly when manually called

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should prefetch pages correctly in viewport with

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should 404 for public file without basePath

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should serve public file with basePath correctly

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should rewrite with basePath by default

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should not rewrite without basePath without disabling

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should not rewrite with basePath when set to false

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should rewrite without basePath when set to false

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should redirect with basePath by default

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should not redirect without basePath without disabling

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should not redirect with basePath when set to false

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should redirect without basePath when set to false

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should add header with basePath by default

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should not add header without basePath without disabling

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should not add header with basePath when set to false

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should add header without basePath when set to false

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should not update URL for a 404

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should handle 404 urls that start with basePath

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should navigate back to a non-basepath 404 that starts with basepath

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should update dynamic params after mount correctly

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should navigate to index page with getStaticProps

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should navigate to nested index page with getStaticProps

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should work with nested folder with same name as basePath

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should work with normal dynamic page

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should work with hash links

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should work with catch-all page

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should redirect trailing slash correctly

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should redirect trailing slash on root correctly

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should navigate an absolute url

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should navigate an absolute local url with basePath

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should navigate an absolute local url without basePath

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should 404 when manually adding basePath with

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should 404 when manually adding basePath with router.push

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should 404 when manually adding basePath with router.replace

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should show the hello page under the /docs prefix

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should have correct router paths on first load of /

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should have correct router paths on first load of /hello

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should fetch data for getStaticProps without reloading

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should fetch data for getServerSideProps without reloading

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should have correct href for a link

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should have correct href for a link to /

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should show 404 for page not under the /docs prefix

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should show the other-page page under the /docs prefix

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should have basePath field on Router

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should navigate to the page without refresh

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should use urls with basepath in router events

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should use urls with basepath in router events for hash changes

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should use urls with basepath in router events for cancelled routes

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should use urls with basepath in router events for failed route change

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should allow URL query strings without refresh

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should correctly replace state when same asPath but different url

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● basePath serverless › should always strip basePath in serverless-loader

command failed with code 1

  132 |         code !== 0
  133 |       ) {
> 134 |         return reject(new Error(`command failed with code ${code}`))
      |                       ^
  135 |       }
  136 | 
  137 |       resolve({

  at ChildProcess.<anonymous> (lib/next-test-utils.js:134:23)

● Test suite failed to run

TypeError: Cannot read property 'pid' of undefined

  275 | export async function killApp(instance) {
  276 |   await new Promise((resolve, reject) => {
> 277 |     treeKill(instance.pid, (err) => {
      |                       ^
  278 |       if (err) {
  279 |         if (
  280 |           process.platform === 'win32' &&

  at lib/next-test-utils.js:277:23
  at killApp (lib/next-test-utils.js:276:9)
  at integration/basepath/test/index.test.js:1097:11

@Janpot
Copy link
Contributor Author

Janpot commented Oct 14, 2020

nope, going to try this again later

@Janpot Janpot closed this Oct 14, 2020
@Janpot Janpot deleted the refactor-am branch October 14, 2020 21:19
@vercel vercel locked as resolved and limited conversation to collaborators Jan 29, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants