给你一句话结论:没报错却不生成 node_modules,90% 是 package.json 里 dependencies 为空、不在项目根目录、或被 postinstall 脚本删掉了。下面一步步排查 + 解决,照着做就行。
一、先看执行结果(最关键)
在项目目录执行:
bash
npm install
如果输出:up to date, audited 0 packages → 没有依赖可装(dependencies 空)
如果输出:up to date, audited 3 packages → 有依赖,但没创建文件夹(权限 / 缓存 / 脚本)
如果直接报错 → 按报错解决(网络 / 权限 / 版本)
二、最常见 5 个原因 + 解决
1)当前目录不对(没在 package.json 所在目录)
bash
pwd # 看当前路径
ls package.json # 必须能看到 package.json
必须 cd 到有 package.json 的项目根目录 再执行 npm install。
2)package.json 里 dependencies 是空
打开 package.json:
json
{
"name": "xxx",
"version": "1.0.0",
"dependencies": {} // 空!所以没包可装,不会生成 node_modules
}
解决:手动加一个依赖测试,比如:
bash
npm install axios –save
这时会生成 node_modules。
3)有 postinstall 脚本,装完立刻删除
检查 package.json 的 scripts:
json
"scripts": {
"postinstall": "rm -rf node_modules" // 这种会装完就删
}
解决:删掉或注释掉 postinstall 里的删除命令,再重新 install。
4)缓存损坏或 lock 文件冲突
bash
# 1. 删旧文件
rm -rf node_modules package-lock.json
# 2. 清缓存
npm cache clean –force
# 3. 换国内镜像(解决网络问题)
npm config set registry https://registry.npmmirror.com
# 4. 重新安装
npm install
这套操作能解决 缓存 / 网络 /lock 文件冲突 问题。
5)权限不足(macOS/Linux)
bash
# 给项目目录读写权限
sudo chmod -R 755 .
# 或改归属
sudo chown -R $USER .
权限不够时,npm silently fail,不报错但不创建文件夹。
三、终极测试(快速验证)
bash
# 新建空目录测试
mkdir test-npm && cd test-npm
npm init -y # 生成 package.json
npm install axios # 安装一个包
ls # 能看到 node_modules 就正常
如果这个测试能生成,说明你的项目目录 / 配置有问题;如果也不行,是全局 npm / 网络 / 权限问题。
四、补充:monorepo 场景(workspaces)
如果项目用了 npm workspaces,子目录不会生成 node_modules,依赖会统一装到根目录。
解决:在根目录执行 npm install,或用 npm ci。


