diff --git a/packages/next/server.js b/packages/next/server.js index bd17c2151c13..e127917ec25f 100644 --- a/packages/next/server.js +++ b/packages/next/server.js @@ -1,4 +1,4 @@ -module.exports = { +const serverExports = { NextRequest: require('next/dist/server/web/spec-extension/request') .NextRequest, NextResponse: require('next/dist/server/web/spec-extension/response') @@ -7,6 +7,11 @@ module.exports = { .userAgentFromString, userAgent: require('next/dist/server/web/spec-extension/user-agent') .userAgent, +} + +if (typeof URLPattern !== 'undefined') { // eslint-disable-next-line no-undef - URLPattern: URLPattern, + serverExports.URLPattern = URLPattern } + +module.exports = serverExports diff --git a/test/unit/web-runtime/next-server-node.test.ts b/test/unit/web-runtime/next-server-node.test.ts new file mode 100644 index 000000000000..1466117c07b4 --- /dev/null +++ b/test/unit/web-runtime/next-server-node.test.ts @@ -0,0 +1,5 @@ +import 'next/dist/server/node-polyfill-fetch' + +it('should be able to require next/server outside edge', () => { + require('next/server') +})