rsnext/packages/next/server.js
Yixuan Xu dc13c12ccc
refactor: add named export in next/server (#39381)
## Bug
When using next/server in different environment ([vitest](https://vitest.dev/)), named import will have runtime error.

```tsx
import { NextRequest } from 'next/server'
// TypeError: NextRequest is not a constructor
const request = new NextRequest()
```
This is conflicted with current `server.d.ts` files.

## Alternative
* reverte current `server.js` to esm, them compiled it to cjs.
2022-08-07 16:17:15 +00:00

26 lines
1,005 B
JavaScript

const serverExports = {
NextRequest: require('next/dist/server/web/spec-extension/request')
.NextRequest,
NextResponse: require('next/dist/server/web/spec-extension/response')
.NextResponse,
userAgentFromString: require('next/dist/server/web/spec-extension/user-agent')
.userAgentFromString,
userAgent: require('next/dist/server/web/spec-extension/user-agent')
.userAgent,
}
if (typeof URLPattern !== 'undefined') {
// eslint-disable-next-line no-undef
serverExports.URLPattern = URLPattern
}
// https://nodejs.org/api/esm.html#commonjs-namespaces
// When importing CommonJS modules, the module.exports object is provided as the default export
module.exports = serverExports
// make import { xxx } from 'next/server' work
exports.NextRequest = serverExports.NextRequest
exports.NextResponse = serverExports.NextResponse
exports.userAgentFromString = serverExports.userAgentFromString
exports.userAgent = serverExports.userAgent
exports.URLPattern = serverExports.URLPattern