从github安装NPM依赖

我无法从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" } 

从GraphLibJS的存储库中可以看出 ,该项目没有设置为公共NPM包。 在package.json文件中的确可以看到private: true标志。 这使得NPM忽略了这个包。

两种可能的解决方

  1. 下载库的JS文件,并将其包含到您的项目中,就像使用其他不是NPM包的其他JS文件一样。 它可能会在你的版本控制下,你将不得不手动更新它。
  2. 分叉GitHub项目并更新package.json文件,以便通告公共NPM存储库。 一些帮助可以来自这篇文章 。
    一旦你完成了你的分支,最好也提交一个pull请求到原始的包;)

编辑

我的回答是错误的,但解决scheme总是一样的。 虽然私人标志并不是真的让NPM不可用,但这里有一些影响这个因素的因素。

  1. 首先也是最重要的,package.json文件包含错误的版本。 在Node.js中,版本需要xyz(例如1.1.0); “1.1”不是有效的版本号。
  2. 在NPMregistry中,已经有一个名为“graphlib”的软件包,由另一个所有者引起了问题。
  3. 如果GitHub上的包是正确的,我认为它可能会工作。 但是,如果出现错误,NPM将尝试在其版本库中查找该版本,该版本没有版本1.1。
  4. 如果你编辑你的package.json文件,将行改为:
    "graphlib": "git://github.com/Queuecumber/GraphLibJS.git",
    然后,NPM实际上试图在GitHub上find这个包,但是它失败,出现以下错误:

    Alessandros-MacBook-Air:testingAlessandro $ npm安装npm ERR! 错误:无效版本:“1.1”npm ERR! 在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)

所以,我的build议仍然是更新库的package.json文件,通过分叉它。