node_modules 要不要复制到新电脑?用 package-lock 和 npm ci 重建
node_modules 可能包含平台二进制、符号链接和安装脚本结果。保留 package.json、锁文件与项目 npm 配置,在目标机做可复现安装。
结论:通常不复制 node_modules
node_modules 是根据 Node/npm 版本、操作系统、CPU 架构、锁文件和安装参数生成的产物。其中可能含原生扩展、符号链接和安装期脚本结果。把 macOS 生成的目录压缩到 Windows,或从 x64 复制到 ARM,即使文件完整也不能证明可用。
1. 迁移前保留这些
package.json和与当前包管理器匹配的锁文件。- 项目级
.npmrc中影响依赖树的非秘密参数;私有仓库 Token 不得提交。 node --version、npm --version、包管理器和项目的engines要求。- 一条干净安装后的构建、测试与启动命令。
2. 在新机器做干净安装
node --version
npm --version
npm ci
npm test
npm run buildnpm 官方文档说明,npm ci 要求已有锁文件;如果锁文件与 package.json 不匹配会直接退出,而不是更新锁文件;如果已有 node_modules 会先移除,安装过程也不改写 package.json 和锁文件。这些性质非常适合做迁移验收。
3. npm ci 失败时怎么分类
- 锁文件不匹配:回到开发分支明确更新依赖并审查 diff,不要在部署机器上用
npm install悄悄篡改锁文件。 - peer dependency 参数不同:若锁文件是使用
--legacy-peer-deps等影响树结构的参数创建,npm 官方建议npm ci使用同样参数,并可把非敏感项目配置提交。 - 原生包编译失败:核对支持的 Node ABI、平台编译链与包版本,不要复制另一平台的二进制文件。
验收标准
- 从没有
node_modules的副本执行npm ci成功。 - 安装后 Git 工作树没有 package.json/锁文件的意外变更。
- 至少通过测试、构建和一次最小启动健康检查。
官方来源
同一问题集群的免费排障页
按你当前看到的报错选一页,不需要从头阅读全部内容。
Python、JDK 与 JetBrains 项目换电脑:解释器、SDK、.idea 和依赖怎么迁移
区分源代码、团队配置、本机状态、秘密文件和可重建目录;按证据处理 Python venv、PyCharm 解释器、IntelliJ JDK、Git 凭据、Node 与 CMake。
2026 JetBrains 合法免费使用指南:学生许可、非商业使用、试用与商业订阅怎么选
不再寻找失效激活码:按学生/教师、个人非商业、商业工作、课堂部署和短期评估五种用途,核对 JetBrains 当前官方许可路径与安全迁移步骤。
PyCharm 报 No module named,终端却能运行:先对齐解释器和 pip
不要先重复安装依赖。用 sys.executable、python -m pip show、运行配置和工作目录定位 PyCharm 与终端是否使用了不同环境。
Python .venv 换电脑后失效:不要复制,用依赖定义重建
Python 官方明确将虚拟环境视为可丢弃、不可搬运的目录。本页给出换机前保存证据、目标机重建和验收步骤。
IntelliJ 无效的源发行版:区分 Project SDK、Language level 和 Gradle JVM
java -version 正常不等于项目编译链正确。逐层核对 JDK、javac、Project SDK、模块 SDK、语言级别与 Gradle JVM。
CMake 换目录后还指向旧路径:删缓存重配置,不要手改 CMakeCache
项目改路径、换电脑或更换编译器后,旧构建树容易留下绝对路径。用 fresh 配置、Presets 和可重现验收修复。