mirror of
https://github.com/hanzoai/next.js.git
synced 2026-10-30 14:46:38 +00:00
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)
45 lines
962 B
JavaScript
45 lines
962 B
JavaScript
import fs from 'fs'
|
|
import path from 'path'
|
|
// eslint-disable-next-line
|
|
import next from 'next' // force a warning during `next build`
|
|
import { useRouter } from 'next/router'
|
|
|
|
export async function getServerSideProps({ res }) {
|
|
res.setHeader('cache-control', 's-maxage=1, stale-while-revalidate')
|
|
|
|
const data = await fs.promises.readFile(
|
|
path.join(process.cwd(), 'data.txt'),
|
|
'utf8'
|
|
)
|
|
|
|
if (data.trim() === 'hide') {
|
|
return {
|
|
notFound: true,
|
|
}
|
|
}
|
|
|
|
return {
|
|
props: {
|
|
hello: 'world',
|
|
data,
|
|
random: Math.random(),
|
|
// make sure fetch if polyfilled
|
|
example: await fetch('https://example.vercel.sh').then((res) =>
|
|
res.text()
|
|
),
|
|
},
|
|
}
|
|
}
|
|
|
|
export default function Page(props) {
|
|
const router = useRouter()
|
|
|
|
return (
|
|
<>
|
|
<p id="gssp">getServerSideProps page</p>
|
|
<p id="router">{JSON.stringify(router)}</p>
|
|
<p id="props">{JSON.stringify(props)}</p>
|
|
</>
|
|
)
|
|
}
|