我正在尝试将以下库添加到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
知道为什么吗?
答案 0 :(得分:1)
运行yarn add <dependency>
时,所需的依赖项实际上已添加到package.json
,然后下载到node_modules
文件夹中。在这种情况下,您不必手动更新package.json
。您是否在项目的根文件夹中执行了yarn add
?这是必不可少的。缺少锁定文件表示您是第一次在此文件夹中执行yarn install
或yarn add
。通常会将锁定文件添加到Git存储库,因此看来您在错误的路径上运行了该命令。
关于编译错误:运行yarn add
之后,您需要在代码中导入所需的功能/模块。然后,您可以使用该功能。看来您没有正确导入模块。您需要在JavaScript文件顶部添加一条语句import downloadjs from 'downloadjs'
。
因此,这些是添加新依赖项时需要遵循的步骤:
yarn add <dependency>
,在本例中为yarn add downloadjs
。通常,您可以在Git存储库中项目的package.json文件中找到依赖项的确切名称。您可以检查是否存在./node_modules/downloadjs
文件夹,其中包含所需的内容以及package.json
和锁定文件中对该程序包的引用。取决于模块捆绑程序,您需要导入现在安装的依赖项。使用require.js,您可以添加如下语句:
const downloadjs = require('downloadjs');
通常,您将像这样导入它:
import downloadjs from 'downloadjs';
然后,将导入的模块保存在变量downloadjs
中。然后,您可以使用文档中所述的模块。在这种情况下,它将是:
downloadjs(data, strFileName, strMimeType);
答案 1 :(得分:1)
如果您使用的是yarn,则只需编写yarn add mydepencyname
或yarn 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);