如何添加依赖项以做出反应?

时间:2020-04-19 13:26:58

标签: javascript reactjs yarnpkg

我正在尝试将以下库添加到react项目:

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.

然后我更新了package.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");  
  }

但是,它不能编译:

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

知道为什么吗?

3 个答案:

答案 0 :(得分:1)

运行yarn add <dependency>时,所需的依赖项实际上已添加到package.json,然后下载到node_modules文件夹中。在这种情况下,您不必手动更新package.json。您是否在项目的根文件夹中执行了yarn add?这是必不可少的。缺少锁定文件表示您是第一次在此文件夹中执行yarn installyarn add。通常会将锁定文件添加到Git存储库,因此看来您在错误的路径上运行了该命令。

关于编译错误:运行yarn add之后,您需要在代码中导入所需的功能/模块。然后,您可以使用该功能。看来您没有正确导入模块。您需要在JavaScript文件顶部添加一条语句import downloadjs from 'downloadjs'

因此,这些是添加新依赖项时需要遵循的步骤:

  1. 转到项目根目录并运行yarn add <dependency>,在本例中为yarn add downloadjs。通常,您可以在Git存储库中项目的package.json文件中找到依赖项的确切名称。您可以检查是否存在./node_modules/downloadjs文件夹,其中包含所需的内容以及package.json和锁定文件中对该程序包的引用。
  2. 取决于模块捆绑程序,您需要导入现在安装的依赖项。使用require.js,您可以添加如下语句:

    const downloadjs = require('downloadjs');
    

    通常,您将像这样导入它:

    import downloadjs from 'downloadjs';
    
  3. 然后,将导入的模块保存在变量downloadjs中。然后,您可以使用文档中所述的模块。在这种情况下,它将是:

    downloadjs(data, strFileName, strMimeType);
    

答案 1 :(得分:1)

如果您使用的是yarn,则只需编写yarn add mydepencynameyarn add -D mydependencyname即可添加devDependency(即“仅在开发阶段有用”。

您将在npm.com上找到正确的依赖项名称。要更新您的依赖项,只需键入yarn upgrade-interactive --latest,然后按空格键以选择要更新的软件包。

答案 2 :(得分:1)

我访问了此包装的回购单,上​​面写着:

通过<script>的简单全局下载功能包括 下载(数据,strFileName,strMimeType);

因此,您需要包括一个脚本标签,并在node_modules下引用此程序包的路径才能使用它。遵循以下原则 <script src="/node_modules/downloadjs" /> 然后全局下载功能将对您的代码可用...让我知道是否有意义... 回购中描述了另一种方法 require("downloadjs")(data, strFileName, strMimeType);