Files
Balázs OrbánandGitHub 701e8d2c0f fix(standalone): support type: "module" (#41268)
Fixes #41258

When we detect `type: "module"` in `package.json`:

~1. generate `server.mjs`~ Not necessary when `type: "module"` is set.
2. use `import` instead of `require`
3. replace `__dirname` with [ESM compatible
alternative](https://blog.logrocket.com/alternatives-dirname-node-js-es-modules/)

In this PR, I also moved some tests (those using `output: "standalone"`)
to a new `test/production/standalone-mode` directory for easier
discoverability in the future.

Run the related test with `pnpm test
test/production/standalone-mode/type-module/index.test.ts`

## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see `contributing.md`

## Feature

- [ ] Implements an existing feature request or RFC. Make sure the
feature request has been accepted for implementation before opening a
PR.
- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Documentation added
- [ ] Telemetry added. In case of a feature if it's used or not.
- [ ] Errors have a helpful link attached, see `contributing.md`

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm lint`
- [ ] The "examples guidelines" are followed from [our contributing
doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)
2022-10-11 17:04:37 +02:00

59 lines
1.1 KiB
JavaScript

export const getStaticProps = ({ params }) => {
console.log('getStaticProps /optional-ssg/[[...rest]]', params)
switch (params.rest?.[0]) {
case 'redirect-1': {
return {
redirect: { destination: '/somewhere', permanent: false },
}
}
case 'redirect-2': {
return {
redirect: { destination: '/somewhere-else', permanent: false },
revalidate: 5,
}
}
case 'not-found-1': {
return {
notFound: true,
}
}
case 'not-found-2': {
return {
notFound: true,
revalidate: 5,
}
}
case 'props-no-revalidate': {
return {
props: {
random: Math.random(),
params: params || null,
},
}
}
default: {
break
}
}
return {
props: {
random: Math.random(),
params: params || null,
},
revalidate: 1,
}
}
export const getStaticPaths = () => {
return {
paths: [],
fallback: true,
}
}
export default function Page(props) {
return <p id="props">{JSON.stringify(props)}</p>
}