В функции getServerSideProps
моей индексной страницы я хотел бы использовать функцию foo
, импортированную из другого локального файла, который зависит от определенной библиотеки Node. Указанную библиотеку нельзя запустить в браузере, так как она зависит от «только серверных» модулей, таких как fs
или request
.
Я использовал следующий шаблон, но хотел бы оптимизировать его. Определение foo
как изменяемого, чтобы включить его в область видимости, неуклюже и кажется возможным избежать.
let foo;
if (typeof window === "undefined") {
foo = require("../clients/foo");
}
export default function Index({data}) {
...
}
export async function getServerSideProps() {
return {
props: {data: await foo()},
}
}
Что было бы здесь лучше всего? Можно ли каким-то образом использовать функцию импорта ES6 Dynami c? Как насчет динамического импорта в getServerSideProps
?
Я использую Next. js версия 9.3.6
.
Спасибо.
UPDATE:
Кажется, будто Next. js собственное решение импорта Dynami c является ответом на это. Я все еще тестирую его и соответствующим образом обновлю этот пост, когда закончу. Документы кажутся мне довольно запутанными, поскольку в них упоминается отключение импорта для SSR, но не наоборот.
https://nextjs.org/docs/advanced-features/dynamic-import