Winston: 3.3.0/3.3.1 之后无法在 docker 上安装

创建于 2020-06-22  ·  23评论  ·  资料来源: winstonjs/winston

npm ERR! path git
npm ERR! code ENOENT
npm ERR! errno ENOENT
npm ERR! syscall spawn git
npm ERR! enoent Error while executing:
npm ERR! enoent undefined ls-remote -h -t ssh://[email protected]/DABH/diagnostics.git
npm ERR! enoent
npm ERR! enoent
npm ERR! enoent spawn git ENOENT
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent

看起来这与 #1813 有关,并且在尝试使用 nodejs 12 安装在 docker 上时仍然会发生。

最有用的评论

全部, v3.3.2已发布,这会从 NPM 而非 GitHub 下载分叉的diagnostics依赖项,因此它应该适合您。 请随时确认或否认。 谢谢!

所有23条评论

这里有同样的问题,但不仅在 docker 中。 由于这种依赖关系,我无法 npm install 我的项目:

npm ERR! Error while executing:
npm ERR! /usr/local/bin/git ls-remote -h -t ssh://[email protected]/DABH/diagnostics.git
npm ERR! 
npm ERR! ssh: connect to host github.com port 22: Connection timed out
npm ERR! fatal: Could not read from remote repository.
npm ERR! 
npm ERR! Please make sure you have the correct access rights
npm ERR! and the repository exists.
npm ERR! 
npm ERR! exited with error code: 128

想知道问题是否是它试图通过 ssh 而不是 https 到达 dep。

你们中的一个可以尝试修改winston的package.json以便diagnostics dep 是
git+https://github.com/DABH/diagnostics.git
? 这应该迫使它使用 https,但我想 100% 确定在发布另一个 hotifx 之前可以解决您的问题。 谢谢!

通过docker安装时我遇到了同样的问题。
我试图修改 package.json,但我不确定我是否做得对。
在 node_modules/winston/package.json 我改变了:“诊断”:“ github:DABH/diagnostics#master ”,
进入:“诊断”:“git+ https://github.com/DABH/diagnostics.git ”,

这不起作用,但我预计需要更改以“diagnostics.git”结尾的依赖项,但我在项目中找不到。

编辑:我使用 ' node:12.10.0-alpine ' 作为 docker 的基础镜像

我一直在调查这个问题,看起来问题来自基于 alpine 的 docker 映像。 无论节点版本如何,即使是以下Dockerfile也无法构建。

FROM node:14-alpine

RUN npm install git+https://github.com/lodash/lodash

啊,因为dep来自github,所以需要git...

FROM node:14-alpine

RUN apk update && apk upgrade && \
    apk add --no-cache bash git openssh

RUN npm install git+https://github.com/lodash/lodash

我知道这不是一个很好的解决方案。 另一种方法是我必须在 NPM 上发布我的diagnostics fork,但是该包已经在 NPM 上,所以我想我需要更改我的 repo 的名称或其他东西,以便我可以唯一地发布。 欢迎任何提示,否则我将在今天晚些时候查看。

是的,我想出了相同的解决方案。(我什至无法想象 git 没有在 alpine 上提供。)我对那个解决方案很好。

问题不在于温斯顿,所以我要关闭它。 谢谢您的帮助!

谢谢,看我上面的帖子^^

@DABH @Kivol

嗯,是的,我明白了,谢谢 :)

对我来说,解决方案仍然是暂时的,不应关闭问题。

NPM 包不应该需要 git 来安装,而只需要 npm。 如果您使用另一个包中的 FORK,因为这个包不符合您的需要。 我认为这个 FORK 必须在源头集成或成为 Winston 维护的项目,因此按照您的建议发布。 对于数百个 docker 映像,强制安装 git 或任何其他工具来安装 npm 包是很奇怪的。 图像和过程必须尽可能精简

嗨,我只是想表达 git 不应该是 winstonjs 的一个部门。 希望这可以解决。 我们有数百个 docker 图像,我认为修改所有这些图像并不是非常理想的。 我相信我们中的很多人都会有同感。 :)

如果 3.3.x 确实有这样的重大变化,我们应该将其移至 4.x。

@DABH @Kivol

其次,上述关于此更改的评论是一项重大更改。 我们在生产中使用了 alpine docker 镜像,这些镜像会因此而中断。

如果需要,那么将支持 4.x 更改。

哇,这个打破了互联网...... :)
确实需要 git 很奇怪。

我有同样的问题,不是在 docker 映像中,而是在我的企业网络中。

我使用 artifactory 下载所有依赖项(npm 和 github 被阻止)。 如果你使用你的 fork,所有没有公共访问权限的项目都会失败。 最大的影响是对于具有限制访问权限的公司或 CI/CD。

在我看来,如果你想保留你的 fork,你需要成为标准并创建一个新的包 npm 而不是引用 github repo。

那么为什么这张票仍然关闭?

同样的问题,请修复。 不幸的是winston是作为一个子依赖的模块安装的,所以我们不能直接修改版本。 这破坏了我们无法访问公共 github 的 CI 管道。

+1 对于这个问题,这打破了我们的 CI 管道。
请还原更改。

@Kivol请重新打开,安装 git 不是许多项目的选项
尤其是当 winston 不是直接依赖项时。

+1 也是如此。 这违反了构建一次原则并破坏了我们消费者的构建。 也许恢复到固定是一个不错的选择?

只是说我认为上面的评论清楚地表明了 Winston 的使用量以及许多项目的使用量。 因此,虽然当问题发生时很痛苦——我希望我能代表很多人——但当我说我们确实重视 Winston 和它的开发人员所做的贡献时。

同样在这里。
补充两点:

  1. 基于 Alpine 图像向 CI/CD 作业添加依赖项打破了这个概念并且有成本(想想“_green dev_”)
  2. 在公司环境中,我们不能更改整个网络(如果可以的话!)配置来只获得一个包

感谢您的积极评论,请耐心等待几个小时,因为我们试图为此推出更好的(非 git 依赖)解决方案。

全部, v3.3.2已发布,这会从 NPM 而非 GitHub 下载分叉的diagnostics依赖项,因此它应该适合您。 请随时确认或否认。 谢谢!

感谢您的修复。

此页面是否有帮助?
0 / 5 - 0 等级