Nano Hash - криптовалюты, майнинг, программирование

Требуются изоморфные Webpack и Nodejs с абсолютным путем

ЦЕЛЬ: я пытаюсь настроить проект в nodejs и webpack таким образом, чтобы функция require могла использовать каталог проекта в качестве корневого, поэтому я может потребоваться с абсолютным путем относительно корня проекта в обеих средах (изоморфное использование, т. е. сервер React + рендеринг клиента).

СИТУАЦИЯ: в webpack вы можете настроить config.resolve.root, чтобы он работал, но в nodejs рекомендуется не переопределять / изменять global.require.

ПРЕДЛОЖЕНИЕ 1: я могу создать новую глобальную функцию

global.p_require

так что он работает в узле; однако я не могу найти способ разрешить webpack анализировать p_require в __webpack_require__ без изменения исходного кода webpack.

ПРЕДЛОЖЕНИЕ 2: я могу создать новую глобальную переменную

global.ROOT_DIR = process.cwd()

так что он работает в узле

require(ROOT_DIR + <relative path to root>);

однако веб-пакет распознает это как динамическое требование. Есть ли способ, чтобы веб-пакет анализировал ROOT_DIR? Я уже пробовал Define Plugin, но кажется, что он загружается после того, как require анализируется веб-пакетом.

ВОПРОС

У кого-нибудь есть решение или возникает такая же проблема?


  • Вы пробовали установить NODE_PATH перед запуском веб-пакета и сервера? NODE_PATH=<root_of-Project> webpack, NODE_PATH=<root_of-Project> node server.js 30.07.2015
  • Я пробовал это. Но проблема в том, что здесь происходит, gist.github.com/branneman/8048520 (не всегда лучший взлом) 31.07.2015
  • у меня такая же проблема ... вы нашли решение? 12.01.2017

Ответы:


1

Я решаю эту проблему, позволяя webpack делать больше; вместо «узел и веб-пакет» это «веб-пакет: клиент и сервер». У меня есть веб-пакет, который выполняет сборку для клиента и сборку для сервера (последний использует «узел» в качестве целевого свойства в конфигурации). Настроить каталоги, которые использует webpack, легко, так что вы позволяете ему выполнять свою работу и создавать сборку для node.

При рендеринге на сервере вам просто потребуется скомпилированная сборка сервера. Если вам нужно передать какие-то данные с сервера в приложение, созданное webpack, подключите его к точке входа, которую вы используете для сборки сервера - webpack создаст его как модуль commonJs, так что ваша точка входа может экспортировать все, что угодно. это самый удобный интерфейс, когда серверу нужно рендерить.

29.01.2016
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..