Я использую webpack для связывания своего JS, поэтому я могу использовать его на сервере и клиенте. Одна вещь, которую мне трудно найти, - это использовать объект извлечения в обоих местах. На стороне сервера, есть узел выборкиReuse ES6 fetch object
import fetch from 'node-fetch';
и на стороне клиента, я не импортировать ничего и window.fetch
объект должен быть использован.
Есть ли способ условно импортировать объект выборки, чтобы он использовался на стороне сервера с node-fetch
и использовался клиентской стороной с window.fetch
?
Я попытался это:
if(window == null) {
import fetch from 'node-fetch';
}
но импорт должен быть 'верхний уровень'
Я также попытался мутирует выборки объекта, если окно присутствует:
import fetch from 'node-fetch';
if(window) fetch = window.fetch;
но fetch становится только для чтения.
Есть ли работа вокруг? В настоящее время у меня есть 2 файла с импортом и один без (для сервера/клиента соответственно), но я хочу избежать дублирования кода.
Вы не хотите связывать ваш клиент расслоения плотной LIBS и сервер расслоения плотной LIBS вместе, потому что клиент расслоения плотной LIBS видны клиентам. – lonelyloner
Вы можете [заменить оператор 'import', когда вы его связываете] (https://www.npmjs.com/package/webpack-replace) с чем-то вроде' var fetch = window.fetch'. –