Как добавить зависимость, чтобы реагировать? - PullRequest
0 голосов
/ 19 апреля 2020

Я пытаюсь добавить следующую библиотеку в реактивный проект:

https://github.com/rndme/download

Я сделал следующее:

yarn add https://github.com/rndme/download

и получил ответ:

info No lockfile found.
[1/4] ?  Resolving packages...
[2/4] ?  Fetching packages...
[3/4] ?  Linking dependencies...
[4/4] ?  Building fresh packages...
success Saved lockfile.
success Saved 1 new dependency.
info Direct dependencies
└─ downloadjs@1.4.8
info All dependencies
└─ downloadjs@1.4.8
✨  Done in 2.19s.

Затем я обновил пакет. json, чтобы включить его:

  "dependencies": {
    "bootstrap": "4.1.3",
    "react": "^16.6.0",
    "react-cookie": "3.0.4",
    "react-dom": "^16.6.0",
    "react-router-dom": "4.3.1",
    "react-scripts": "2.1.0",
    "reactstrap": "6.5.0",
    "downloadjs": "1.4.8"
  },

И добавил код для его вызова:

  async downloadFile(file, url) {
    const res = await fetch(url);
    const blob = res.blob();

    // from downloadjs it will download your file
    download(blob, file, "text/plain");  
  }

Однако он не ' t compile:

Failed to compile
./src/LicenseList.js
  Line 64:  'download' is not defined  no-undef

Есть идеи почему?

Ответы [ 3 ]

1 голос
/ 19 апреля 2020

Если вы используете пряжу, вам просто нужно написать yarn add mydepencyname или yarn add -D mydependencyname, чтобы добавить devDependency (то есть "полезно только на этапе разработки".

Вы найдете правильный имя зависимости в npm .com. Чтобы обновить зависимости, просто введите yarn upgrade-interactive --latest и нажмите клавишу пробела, чтобы выбрать пакет, который вы хотите обновить.

1 голос
/ 19 апреля 2020

Я посетил Repo для этого пакета, и он говорит следующее:

Простая глобальная функция загрузки через <script> включает загрузку (data, strFileName, strMimeType);

Таким образом, вы должны включить тег сценария и указать ссылку в каталоге node_modules на этот пакет, чтобы использовать его. Что-то вроде <script src="/node_modules/downloadjs" /> Тогда для вашего кода будет доступна глобальная функция загрузки ... Дайте мне знать, если это имеет смысл ... Есть другой метод, описанный в Репо require("downloadjs")(data, strFileName, strMimeType);

1 голос
/ 19 апреля 2020

Когда вы запускаете yarn add <dependency>, ваша желаемая зависимость фактически добавляется в package.json и затем загружается в папку node_modules. В этом случае вам не нужно обновлять package.json вручную. Вы выполнили yarn add в папке root вашего проекта? Это важно Отсутствие файла блокировки означает, что вы выполняете yarn install или yarn add в первый раз в этой папке. Файл блокировки обычно добавляется в репозиторий Git, поэтому кажется, что вы запускаете эту команду по неправильному пути.

Относительно ошибки компиляции: После запуска yarn add вам необходимо импортировать нужный функция / модуль в вашем коде. Затем вы можете использовать функциональность. Кажется, вы неправильно импортировали модуль. Вам нужно добавить оператор import downloadjs from 'downloadjs' поверх вашего JavaScript файла.

Итак, вот шаги, которые вы должны выполнить при добавлении новой зависимости:

  1. Go в проект root и запустить yarn add <dependency>, в данном случае yarn add downloadjs. Точное имя зависимости обычно находится в пакете проекта. Файл json в репозитории Git. Вы можете проверить, есть ли сейчас папка ./node_modules/downloadjs с нужным содержимым и ссылкой на этот пакет в package.json и файле блокировки.
  2. В зависимости от вашего модуля модуля, вам нужно импортировать теперь установленную зависимость. С помощью require. js вы бы добавили следующее утверждение:

    const downloadjs = require('downloadjs');
    

    Обычно вы, однако, импортировали бы его следующим образом:

    import downloadjs from 'downloadjs';
    
  3. Тогда импортированный модуль сохраняется в переменной downloadjs. Затем вы можете использовать модуль, как описано в документации. В этом случае это будет:

    downloadjs(data, strFileName, strMimeType);
    
...