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 版本”的主要内容,如果未能解决你的问题,请参考以下文章