docker 中的 npm 更新失败

Posted

技术标签:

【中文标题】docker 中的 npm 更新失败【英文标题】:npm update failed in docker 【发布时间】:2017-11-02 12:28:37 【问题描述】:

我无法在 docker by

中更新 npm 包 xxx
npm update -g 

npm install -g xxx

更新后无法执行xxx,抛出

Error: Cannot find module 'semver'

所以我不得不

npm uninstall -g xxx 
npm install -g xxx

每次我想更新软件包时都要重新安装。 如何在 docker 中更新 npm 包?

【问题讨论】:

你在windows(或)linux的哪个环境下遇到这个问题? @DavidR Debian8 64bit 猜猜,您需要使用rm 命令完全删除您的node_modules 目录,并像之前尝试的那样进行完全卸载。 或者,您可以使用npm rm 命令删除您的node_modules 目录。 每次我想更新我的 npm 包时我都会这样做吗?如果是,那根本没有解决问题。 【参考方案1】:

如何在 docker 中更新 npm 包?

您重新构建映像并使用映像中内置的更新重新部署它。

docker 容器不是虚拟机——它不应该要求永远存在。一个 docker 容器应该很容易被销毁和重新创建。

当您需要更新代码/库时,应使用映像中的更新重新构建映像,然后部署新映像,停止旧容器并基于新映像启动新容器。

【讨论】:

我在退出临时 docker 容器之前收到错误“找不到模块 xxx”。如果我提交或导出容器,问题一定仍然存在。 除非你想快速迭代,一种方法是将你的代码挂载到一个容器中(例如基于node:latest),运行bash,这样你就可以非常快速地进行代码测试。现在 npm5 已损坏(遇到同样的问题以及其他问题,请访问 npm 问题页面...)

以上是关于docker 中的 npm 更新失败的主要内容,如果未能解决你的问题,请参考以下文章

NPM 安装在 docker 容器中失败 - npm WARN tar ENOENT:没有这样的文件或目录

npm install git+ssh 在 docker (node16) 中失败

为啥在 `npm install` 时`package-lock.json` 会导致 docker 容器构建失败?

Docker 构建 npm 错误日志

npm - 如果使用 docker 运行,则找不到模块

Docker 容器中的 Npm run serve