Используйте модули npm, написанные на ES6, с реактивными скриптами

В моем проекте мне нужно использовать модуль npm ipfs-api с create-react-app,

я могу бежать npm start и запустить проект.

Но когда я пытаюсь построить проект с react-scripts buildвыкидывает следующую ошибку

Не удалось скомпилировать.

Не удалось минимизировать код из этого файла:

./node_modules/ipfs-api/src/utils/module-config.js:7

Подробнее читайте здесь: https://github.com/facebook/create-react-app/blob/master/packages/react-scripts/template/README.md#npm-run-build-fails-to-minify

В соответствии с предложениями в предоставленной ссылке в журнале ошибок, я попытался использовать,

"dependencies": {
     ...
     "ipfs-api": "github:atfornes/js-ipfs-api#transpiled",
     ...
}

вместо "ipfs-api": "^22.0.0",, Хотя это решенная ошибка для ipfs-apiдругие зависимые модули (возможно, установлены с ipfsapi) давала однотипные Failed to minify ошибки которые я перестал их переносить вручную.

Есть ли способ перевести все модули зависимых узлов в es5, прежде чем использовать команду react-scripts build? Или любой другой способ преодолеть эту проблему?

1 ответ

Решение

Обычно клиентские или платформо-независимые пакеты компилируются в ES5 при публикации. Если у вас возникла эта проблема, это может означать, что пакет не предназначен для клиентской стороны.

Как объясняется в документации, пакет содержит пакет для браузеров, который включает в себя полизаполненные функции узла (потоки и т. Д.), Необходимые для его запуска на стороне клиента.

Он должен использоваться как глобальный:

import 'ipfs-api/dist';

ipfs(...)

Есть ли способ перевести все модули зависимых узлов в es5, пока перед этим не будет использована команда act-scripts build?

Для этого потребуется удалить конфигурацию create-реагировать на приложение и настроить Webpack для правильной передачи этого пакета. Этот пример из документации показывает, как специфичные для узла части должны быть настроены для связывания для браузеров.

Другие вопросы по тегам