【问题标题】:Install NPM dependency from github从 github 安装 NPM 依赖项
【发布时间】:2014-10-04 03:00:07
【问题描述】:

我无法从 github 安装我自己的依赖项之一。

我的 package.json 看起来像这样:

{
  "name": "smartorm",
  "description": "Intelligent multi-database object relational mapping",
  "private": true,
  "main": "smart.js",
  "dependencies": {
    "mysql": "~2.5.0",
    "graphlib": "Queuecumber/GraphLibJS#v1.1",
    "promise": "~6.0.0",
    "xtend": "Raynos/xtend#v4.0.0"
  }
}

依赖“graphlib”导致错误。这是我的存储库之一,所以我很确定我没有正确设置它。任何帮助将不胜感激。

运行npm install时出现以下错误

npm http 304 https://registry.npmjs.org/graphlib
npm ERR! Error: No compatible version found: graphlib@'Queuecumber/GraphLibJS#v1.1'
npm ERR! Valid install targets:
npm ERR! ["0.0.1","0.0.2","0.0.3","0.0.4","0.0.5","0.0.6","0.1.0","0.1.1","0.2.0","0.2.1","0.3.0","0.3.1","0.3.2","0.3.3","0.4.0","0.4.1","0.4.2","0.5.0","0.5.1","0.5.2","0.5.3","0.5.4","0.5.5","0.5.6","0.5.7","0.5.8","0.5.9","0.5.10","0.5.11","0.5.12","0.6.0","0.7.0","0.7.1","0.7.2","0.7.3","0.7.4","1.0.0-pre1","0.8.0"]
npm ERR!     at installTargetsError (/usr/share/npm/lib/cache.js:719:10)
npm ERR!     at /usr/share/npm/lib/cache.js:638:10
npm ERR!     at saved (/usr/share/npm/node_modules/npm-registry-client/lib/get.js:142:7)
npm ERR!     at /usr/lib/nodejs/graceful-fs/polyfills.js:133:7
npm ERR!     at Object.oncomplete (fs.js:107:15)
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>

npm ERR! System Linux 3.13.0-36-generic
npm ERR! command "/usr/bin/nodejs" "/usr/bin/npm" "install"
npm ERR! cwd /media/Data/Code/Active/SmartORM
npm ERR! node -v v0.10.25
npm ERR! npm -v 1.3.10
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /media/Data/Code/Active/SmartORM/npm-debug.log
npm ERR! not ok code 0

我有一个名为“v1.1”的标签,它与 github 发布标题“v1.1”相关联。 该存储库的 package.json 在版本号字段下列出了“1.1”。我已将来自该存储库的 package.json 粘贴到此处

{
  "name": "graphlib",
  "description": "Directed graphs in JavaScript using a sparse (adjacency list) representation",
  "private": true,
  "version": "1.1"
} 

【问题讨论】:

    标签: json node.js git github npm


    【解决方案1】:

    正如repository for GraphLibJS 中所见,该项目未设置为公共 NPM 包。在package.json 文件中,确实可以看到private: true 标志。这使得 NPM 忽略该包。

    两种可能的解决方案:

    1. 下载库的 JS 文件并将其包含到您的项目中,就像处理任何其他非 NPM 包的 JS 文件一样。它可能会受到您的版本控制,您必须手动更新它。
    2. fork GitHub 项目并更新package.json 文件,以便它公布一个公共 NPM 存储库。一些帮助可以来自this article
      一旦你完成了你的分叉,最好也向原始包提交一个拉取请求;)

    编辑

    我的回答是错误的,但解决方案总是一样的。虽然私有标志使包对 NPM 不可用是不正确的,但这里有某些因素会影响这一点。

    1. 首先也是最重要的,package.json 文件包含错误的版本。在 Node.js 中,版本需要采用 x.y.z 形式(例如 1.1.0); “1.1”不是有效的版本号。
    2. 在 NPM 注册表中,已经有一个名为“graphlib”的包,由另一个所有者提供,这是导致问题的原因。
    3. 如果 GitHub 上的包是正确的,我认为它可能会起作用。但是,鉴于该错误,NPM 会尝试在其存储库中查找没有 1.1 版本的错误。
    4. 如果您编辑 package.json 文件,将行更改为:
      "graphlib": "git://github.com/Queuecumber/GraphLibJS.git",
      然后 NPM 实际上尝试在 GitHub 上获取该包,但它失败并出现以下错误:

      Alessandros-MacBook-Air:测试 Alessandro$ npm install npm 错误!错误:无效版本:“1.1” npm 错误!在 Object.module.exports.fixVersionField (/usr/local/lib/node_modules/npm/node_modules/read-package-json/node_modules/normalize-package-data/lib/fixer.js:183:13)

    所以,我的建议仍然是通过 fork 更新库的 package.json 文件。

    【讨论】:

    • 我认为private: true 只是阻止软件包发布到 npm,而不是从远程源安装它。
    • @mscdex 你是对的。但是,我解决了这个问题,我正在更新答案
    • 3 部分版本号修复了它。我搜索了一段时间,但从未在任何地方看到此文档。
    • @MaxEhrlich npmjs.org/doc/files/package.json.html 说“版本必须可以被node-semver解析”,这确实很神秘。
    猜你喜欢
    • 2018-12-07
    • 2016-08-02
    • 2021-12-27
    • 2016-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-28
    • 2018-01-17
    相关资源
    最近更新 更多