Как лучше всего импортировать "серверный" код в Next. js? - PullRequest
2 голосов
/ 05 мая 2020

В функции 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

...