Docker“检测到未定义的 Node.js 版本”

Posted

技术标签:

【中文标题】Docker“检测到未定义的 Node.js 版本”【英文标题】:Docker "Node.js version undefined detected" 【发布时间】:2020-05-25 22:06:06 【问题描述】:

直到今天,我的 Angular 项目都使用 Gitlab 在 Docker 上运行。但是从今天下午开始,我遇到了一个我无法解决的错误。

这是我的 DockerFile:

ARG REPOSITORY

ARG PORT

FROM $REPOSITORY/javascript:cert as build

WORKDIR /app

COPY ./ /app

RUN npm install -g npm@latest

RUN npm i -g @angular/cli

RUN ng build --output-path=dist

FROM $REPOSITORY/nginx:cert

COPY --from=build /app/dist /usr/share/nginx/html

EXPOSE 80

ENTRYPOINT  ["nginx", "-g", "daemon off;"]

正如我所说,一切正常,但现在当我到达“Step 8/12 : RUN ng build --output-path=dist”时,我收到了这个错误:

"检测到未定义的 Node.js 版本。Angular CLI 需要 v10.13 或 v12.0 的最低 Node.js 版本。”

似乎找不到我的 Node 版本,我不明白为什么。我试图设置一个特定的 npm 版本,但它没有改变。

有什么想法吗? 感谢您的帮助!

【问题讨论】:

基础镜像是否安装了节点? 我认为是的,因为如果不是这样的话,它直到现在都不会起作用。我对 Docker 很陌生,我不确定“基本映像”是什么。如何检查它是否安装好? 要么有人更改了基础镜像,要么新的角度版本与您拥有的 Node 版本冲突。您可以通过检查图像来检查第一个假设。对于第二个,为依赖项指定特定版本并在确定新版本有效时手动升级总是一个好主意。 当我在控制台中输入“docker images”时,我可以找到带有“latest”标签的“node”行。当我检查它时,我没有发现任何问题,但我不确定我应该寻找什么。我应该删除并重新创建一个新的节点图像吗? 【参考方案1】:

我遇到了和你一样的错误,但是当我更改文件夹时,它对我有用。我不确定发生了什么。

D:\OneDrive - XXX\Achyuth\Learning>node -v
v11.3.0

D:\OneDrive - XXX\Achyuth\Learning>npm -v
6.4.1

【讨论】:

【参考方案2】:

尝试将您的 Node.js 版本降级/升级到 10.15,它会起作用。 由于某种原因,它不适用于 10.9

【讨论】:

你有这方面的证据吗? 我遇到了类似的问题,降级到 10.15 为我解决了这个问题。 这通常是很好的证据 :) 如果您将此添加到您的答案中,读者会立即明白,这不仅仅是一个疯狂的猜测 ;)

以上是关于Docker“检测到未定义的 Node.js 版本”的主要内容,如果未能解决你的问题,请参考以下文章

重启docker命令(docker自动重启)

Docker教程-1-学习及安装Docker

Docker教程-1-学习及安装Docker

Docker03 Docker基础知识Docker实战

Docker学习__docker命令[docker version 和 docker info]

[转帖]Docker里运行Docker docker in docker(dind)