/
static-paths-worker.ts
41 lines (36 loc) · 1.19 KB
/
static-paths-worker.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import { buildStaticPaths } from '../build/utils'
import { loadComponents } from '../next-server/server/load-components'
// store initial require modules so we don't clear them below
const initialCache = new Set(Object.keys(require.cache))
// we call getStaticPaths in a separate process to ensure
// side-effects aren't relied on in dev that will break
// during a production build
export async function loadStaticPaths(
distDir: string,
buildId: string,
pathname: string,
serverless: boolean
) {
// we need to clear any modules manually here since the
// require-cache-hot-loader doesn't affect require cache here
// since we're in a separate process
Object.keys(require.cache).forEach(mod => {
if (!initialCache.has(mod)) {
delete require.cache[mod]
}
})
const components = await loadComponents(
distDir,
buildId,
pathname,
serverless
)
if (!components.getStaticPaths) {
// we shouldn't get to this point since the worker should
// only be called for SSG pages with getStaticPaths
throw new Error(
`Invariant: failed to load page with getStaticPaths for ${pathname}`
)
}
return buildStaticPaths(pathname, components.getStaticPaths)
}