Использование скомпилированной библиотеки webpack как внешней в CLJS
У меня есть старый код, который использует D3 и скомпилирован с веб-пакетом. Я играю с идеей портировать биты D3 в качестве внешней библиотеки и обернуть их в качестве компонента реагента / рекадра, но у меня есть проблемы с импортом битов JS.
Я создал небольшой проект, который демонстрирует проблему:
- Код библиотеки JS.
- Конфигурация webpack, используемая для (UMD) компиляции.
- Скомпилированная библиотека (без minify для удобства чтения).
Теперь в проекте JS я бы использовал такую библиотеку:
import * as module from 'd3-lib.js'
var m = new module.Module()
m.setData("miserables.json").render();
Я пытался имитировать это:
Я указываю ns, которые предоставляет библиотека с использованием foreign-libs в project.clj.
Импортируйте библиотеку.
Создание экземпляра через JS-взаимодействие
Все же я продолжаю получать:
Uncaught Ошибка: goog.require не может найти: d3_lib
1 ответ
Вы пытались использовать пакет d3 из cljsjs?
Использование пакета cljsjs/d3
Добавьте координаты зависимостей [cljsjs/d3 "4.3.0-5"] в список: зависимостей в вашем проекте. Убедитесь, что в вашем проекте требуется cljsjs.d3, чтобы он был добавлен в ваш скомпилированный код ClojureScript.
(ns your.namespace (: require [cljsjs.d3]))
Теперь вы можете использовать только что добавленную библиотеку, обратившись к ней через глобальное пространство имен Javascript, например, egjs/ReactPlease. Проверьте документацию проекта, чтобы узнать, какую глобальную библиотеку использует. Обратите внимание: вы не можете использовать:as или: ссылаться на зависимости CLJSJS.