当npm install找不到一个依赖项,但你可以正常下载时该怎么办?

2jcobegt  于 2023-06-23  发布在  其他
关注(0)|答案(3)|浏览(392)

因此,我尝试运行一个JavaScript文件,该文件附带一个package.json文件。当我在文件夹中运行npm install时,它失败了,因为它找不到其中一个依赖项。
然后,我可以从package.json文件中删除此依赖项,并从提供的位置手动下载它,并将其放在不同的文件夹中。npm安装将完成。
我还可以在下载的依赖文件夹上运行“npm install”,以获得其所有依赖项。
问题是,现在我有两个文件夹,每个文件夹中有许多不同的脚本,还有两个package.json文件。
处理这种情况的正确方法是什么?
我能以某种方式将原始package.json指向我的本地硬盘,或者我在互联网上找到文件的位置吗?

kgsdhlau

kgsdhlau1#

你可以使用npm link命令,它允许你在本地将一个包符号链接到另一个文件夹。
从顶级package.json文件中删除手动下载的依赖项。在顶层目录中运行npm install以安装剩余的依赖项。导航到包含手动下载的依赖项的文件夹。在该文件夹中运行npm链接。这将为包创建一个全局符号链接。导航回顶层目录并运行npm链接。这将在顶级目录的node_modules文件夹中创建一个符号链接,指向手动下载的依赖项。通过使用npm链接,您可以避免重复依赖项,并将其作为符号链接进行管理。

jhkqcmku

jhkqcmku2#

如果已手动下载缺少的依赖项并安装了其依赖项,则可以在项目目录中创建一个新文件夹,并将下载的依赖项及其依赖项放在该文件夹中。
然后,您可以更新package.json文件,使其指向放置下载的依赖项的本地目录。为此,请在package.json文件的dependencies部分中向依赖项的路径添加“file:”前缀。
例如,如果您在项目目录中创建了一个名为local-deps的文件夹,并将下载的依赖项放置在该文件夹中,您可以如下更新package.json文件:

"dependencies": {
    "missing-dependency": "file:./local-deps/missing-dependency"
  }
}

这告诉npm在与项目目录相关的local-deps文件夹中查找缺少的依赖包。
更新package.json文件后,再次运行npm install以安装更新后的package.json文件中的依赖项。
这样,您就可以将所有的依赖项保存在一个地方,避免了多个文件夹中有不同的脚本和package.json文件。

izj3ouym

izj3ouym3#

在您描述的场景中,您手动下载了一个依赖项,并且有两个单独的文件夹,其中包含不同的package.json文件,您可以采取几种方法来处理这种情况:
1.使用本地包引用:您可以使用本地包引用来指向本地硬盘驱动器上下载的依赖项,而不是修改原始package.json文件。在主项目的package.json中,使用相对或绝对文件路径指定文件依赖项。例如:

"dependencies": {
  "dependency-name": "file:/path/to/dependency-folder"
}
  • 将dependency-name替换为依赖项的实际名称,将/path/to/dependency-folder替换为下载依赖项的文件夹的路径。当您在主项目中运行npm install时,它将使用本地引用的包,而不是试图从Internet下载。*

1.使用本地文件别名:如果您想保持原始package.json文件不变,可以使用本地文件别名来指向下载的依赖项。您可以为下载的依赖文件夹创建符号链接或别名,并在主项目的package.json中引用它。例如:

"dependencies": {
  "dependency-name": "file:./alias-folder"
}
  • 在这种情况下,别名文件夹应该是指向下载的依赖文件夹的符号链接或别名。同样,当你在主项目中运行npm install时,它将使用本地别名包,而不是试图从Internet下载。*

记住更新上面示例中的路径,以匹配特定的文件夹结构和位置。
使用这两种方法中的任何一种都可以让您在项目中使用本地下载的依赖项的同时保持原始package.json的完整性。但是,需要注意的是,这可能会引入额外的维护和版本控制复杂性,因为您需要单独管理手动下载的依赖项的更新和兼容性。

相关问题