为啥每次从 github 拉取时都必须删除 node_modules 文件夹

Posted

技术标签:

【中文标题】为啥每次从 github 拉取时都必须删除 node_modules 文件夹【英文标题】:Why must I delete the node_modules folder every time I pull from github为什么每次从 github 拉取时都必须删除 node_modules 文件夹 【发布时间】:2021-01-11 01:05:45 【问题描述】:

我知道这可能是一个很容易回答的问题,但我很好奇为什么每次从 github 存储库中提取时都必须删除 node_modules 文件夹。 当我从我的仓库拉取后尝试执行“npm start”时,我收到以下错误,并且在删除 node_modules 文件夹并执行“npm install”时,问题暂时得到解决。

sh: react-scripts: command not found
npm ERR! code ELIFECYCLE
npm ERR! syscall spawn
npm ERR! file sh
npm ERR! errno ENOENT...

我注意到该文件夹​​显示为推送时所做更改的一部分(大约 2,800 个文件)。 这是我需要忽略 node_modules 文件夹(.gitignore)以阻止这种情况发生的情况吗? 关于为什么会发生这种情况的任何解释也很酷,就像我的仅供参考一样。

非常感谢您。

【问题讨论】:

一般做法是不要签入node_modules。 NPM 已经使用package-lock.json 来确保正确的版本控制。话虽如此:如果你必须每次都删除node_modules,你需要修复你的npm安装,因为你不应该这样做。告诉npm 使用npm cache verify 进行自我修复,如果这不能修复它,那么您的npm 已经损坏到足以保证正确卸载和重新安装。 @Mike'Pomax'Kamermans 我听从了上述建议。如果问题仍然存在,我也会密切关注并检查 npm。谢谢你的解释和提示!!保持安全并保持健康。 【参考方案1】:

创建一个名为.gitignore 的文件并在其中粘贴以下代码(PS:您可以在所有项目中使用此文件,它包含几乎所有在将项目推送到 github 时必须忽略的扩展名和文件夹):

# Numerous always-ignore extensions
*.diff
*.err
*.orig
*.log
*.rej
*.swo
*.swp
*.vi
*~
*.sass-cache
node_modules/
.tmp/
.vs

# OS or Editor folders
.DS_Store
Thumbs.db
.cache
.project
.settings
.tmproj
*.esproj
nbproject
*.sublime-project
*.sublime-workspace
*.komodoproject
.komodotools
_notes
dwsync.xml
.sass-cache
.idea

【讨论】:

太棒了!我已将此添加到我的 .gitignore 中。真的很感谢答案!!保持安全并保持健康。【参考方案2】:

您应该将 node_modules 目录添加到 .gitignore 以不被推送到存储库中,然后将其删除。 并且 node_modules 应该只在你的开发环境中生成。

【讨论】:

感谢您的回答!这成功了!保持安全并保持健康!

以上是关于为啥每次从 github 拉取时都必须删除 node_modules 文件夹的主要内容,如果未能解决你的问题,请参考以下文章

如何避免每次推送或拉取代码时都添加 ssh 密钥

Xcode 5:从新的 GitHub 存储库推送和拉取不起作用

为啥每次安装新库时都必须更新 npm?

防止 Git 在拉取时更改权限

每次我从物理 iOS 和模拟器切换构建时都必须运行 Flutter Clean 并删除框架

如何解决 Git Portable 的文件访问问题?