【发布时间】:2017-01-17 19:39:03
【问题描述】:
我们正在运行 Artifactory 4.7.7 rev 40199,目的是让项目的所有 NPM 流量都通过 Artifactory。我们在将 npm-shrinkwrap 和 Github 的外部依赖重写结合使用时遇到问题。
我们目前的设置如下所示
-
npm-virtual(NPM 与项目 .npmrc 文件指向的虚拟存储库。按此顺序指向以下存储库。为 Github 设置了外部依赖关系重写)
- npm-local(我们自己的包的本地仓库)
- registry-npmjs-org(用于从官方 NPM 注册表缓存包的远程仓库
- npm-github-rewrite(用于缓存重写的 Github 存储库的远程存储库)
我们看到的问题可以通过以下方式复制
-
npm install一个带有 Github 依赖的包 (jsdoc@3.4.0) - Artifactory 重写并缓存 Github 依赖项(
taffydb&esprima) -
npm shrinkwrap锁定版本 - 删除
node_modules - 运行
npm install
节点设置为不使用我们的代理,第二个npm install 失败并显示以下消息
npm ERR! fetch failed https://github.com/hegemonic/taffydb/tarball/7d100bcee0e997ee4977e273cdce60bd8933050e
npm WARN retry will retry, error on last attempt: Error: connect ECONNREFUSED 192.30.253.112:443
npm ERR! fetch failed https://github.com/ariya/esprima/tarball/49a2eccb243f29bd653b11e9419241a9d726af7c
npm WARN retry will retry, error on last attempt: Error: connect ECONNREFUSED 192.30.253.112:443
npm ERR! fetch failed https://github.com/ariya/esprima/tarball/49a2eccb243f29bd653b11e9419241a9d726af7c
npm WARN retry will retry, error on last attempt: Error: connect ECONNREFUSED 192.30.253.113:443
npm ERR! fetch failed https://github.com/hegemonic/taffydb/tarball/7d100bcee0e997ee4977e273cdce60bd8933050e
npm WARN retry will retry, error on last attempt: Error: connect ECONNREFUSED 192.30.253.113:443
npm ERR! fetch failed https://github.com/ariya/esprima/tarball/49a2eccb243f29bd653b11e9419241a9d726af7c
npm ERR! fetch failed https://github.com/hegemonic/taffydb/tarball/7d100bcee0e997ee4977e273cdce60bd8933050e
npm WARN optional Skipping failed optional dependency /jsdoc/taffydb:
npm WARN Error: connect ECONNREFUSED 192.30.253.113:443
npm WARN at Object.exports._errnoException (util.js:1012:11)
npm WARN at exports._exceptionWithHostPort (util.js:1035:20)
npm WARN at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1080:14)
npm WARN { Error: connect ECONNREFUSED 192.30.253.113:443
npm WARN at Object.exports._errnoException (util.js:1012:11)
npm WARN at exports._exceptionWithHostPort (util.js:1035:20)
npm WARN at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1080:14)
npm WARN code: 'ECONNREFUSED',
npm WARN errno: 'ECONNREFUSED',
npm WARN syscall: 'connect',
npm WARN address: '192.30.253.113',
npm WARN port: 443,
npm WARN parent: 'jsdoc',
npm WARN optional: '/jsdoc/taffydb' }
npm ERR! Windows_NT 10.0.10586
npm ERR! argv "D:\\Languages\\NodeJS\\node.exe" "D:\\Languages\\NodeJS\\node_modules\\npm\\bin\\npm-cli.js" "install"
npm ERR! node v6.3.1
npm ERR! npm v3.10.3
npm ERR! code ECONNREFUSED
npm ERR! errno ECONNREFUSED
npm ERR! syscall connect
npm ERR! Error: connect ECONNREFUSED 192.30.253.113:443
npm ERR! at Object.exports._errnoException (util.js:1012:11)
npm ERR! at exports._exceptionWithHostPort (util.js:1035:20)
npm ERR! at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1080:14)
npm ERR! { Error: connect ECONNREFUSED 192.30.253.113:443
npm ERR! at Object.exports._errnoException (util.js:1012:11)
npm ERR! at exports._exceptionWithHostPort (util.js:1035:20)
npm ERR! at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1080:14)
npm ERR! code: 'ECONNREFUSED',
npm ERR! errno: 'ECONNREFUSED',
npm ERR! syscall: 'connect',
npm ERR! address: '192.30.253.113',
npm ERR! port: 443,
npm ERR! parent: 'jsdoc' }
npm ERR!
npm ERR! If you are behind a proxy, please make sure that the
npm ERR! 'proxy' config is set properly. See: 'npm help config'
由于某种原因,shrinkwrap 的存在似乎完全忽略了依赖项重写规则,并且无论如何都只是尝试转到 Github。
我们错过了什么吗?我们缺少一些设置步骤吗?
基于@uriah-l 帖子的其他详细信息
-
npm-shrinkwrap.json仅包含对 Artifactory URL 的引用。该文件中没有 GitHub 引用。 - 包的本地缓存版本的
_resolved、_from和tarball属性在它的package.json(存储在tgz旁边)设置为Artifactory urls/versions - 本地缓存版本的
repository.url属性中确实引用了 Github - 已安装的 (
{INSTALL_DIR}/node_modules/taffydb/package.json) 版本的软件包有它的_resolved、_from和tarball属性,它的package.json设置为 Artifactory urls/versions` - 原始包 (
jsdoc@3.4.0) 的人工缓存版本似乎在 tgz 中的package.json未更改 - 原始包的 Artifactory Npm 信息选项卡有一个 GitHub URL,而不是另一个包的版本号 (
taffydb) - 已重写的包的版本 (
taffydb) 出现在正确的 repo (npm-github-rewrite) 中,它们的解包package.json似乎没有改变
【问题讨论】:
标签: github url-rewriting npm repository artifactory