首页 > 解决方案 > 如何解决 nodejs 包中的依赖关系

问题描述

我从 Github 下载了一个 nodejs 项目,编辑了源代码以添加缺少的功能,现在我正在尝试将其编译为可执行文件或运行未编译的 ( node main.js)。在这两种情况下,我都会收到消息,它找不到它的依赖项。这不是我正常的编程语言,所以我不熟悉节点依赖项是如何工作的。

有问题的依赖项是其他节点包。我安装了它们,npm install -g但这没有帮助。

package.json文件中,它们描述如下:

  "dependencies": {
    "@castlelemongrab/ioh": "^0.0.4",
    "@castlelemongrab/strr": "^0.0.1",
    "bent": "^7.3.6",
    "jsDump": "^1.1.0",
    "yargs": "^15.3.1"
  },

警告消息将依赖项指定@为缺少的依赖项。虽然这只是一个警告,但当您尝试使用它时,该程序无法运行并发出相同的消息,因此它实际上是一个错误。我发现这篇Stackoverflow 帖子提到您可以像这样定义依赖项:

"dependencies": {
  "public": "git://github.com/user/repo.git#ref", 
  "private": "git+ssh://git@github.com:user/repo.git#ref"
}

但这似乎没有任何效果:

错误:找不到模块“@castlelemongrab/ioh”

我应该如何解决?我尝试进入node_modules目录并将库git clone-ing到文件夹中,但这也导致了一些错误:ioh@castlelemongrab

npm ERR! code EISGIT
npm ERR! path C:\...\node_modules\@castlelemongrab\ioh
npm ERR! git C:\...\node_modules\@castlelemongrab\ioh: Appears to be a git repo or submodule.
npm ERR! git     C:\...\node_modules\@castlelemongrab\ioh
npm ERR! git Refusing to remove it. Update manually,
npm ERR! git or move it out of the way first.

此外,由于我的系统上安装了此软件包的生产版本并且我不想覆盖它,如果我更改“名称”字段,package.json这是避免冲突的有效且安全的方法吗?

标签: node.jsnpmdependencies

解决方案


解决方案是将缺少的git clone模块放入 node_modules ,然后放入and 。rm -rf.git.gitignore

通过反复试验弄清楚了这一点。如果有人有更完整和更明智的答案,请随时添加。


推荐阅读