我的package.json文件中有十几个依赖项,而那些依赖项还包含许多其他依赖项。我们都知道依赖关系树可以快速增长。
我多次运行npm run dev
,但没有给我一个错误。但是,它最近开始抱怨缺少模块。那时依赖树中没有增量,也没有更改任何可能需要缺少模块的代码。
清除node_modules文件夹并重新进行npm install
总是可以解决此问题,但我不知道根本原因是什么或如何解决。在过去,这是我偶尔遇到的一个问题。但是,它开始更频繁地出现。
答案 0 :(得分:0)
这可能是硬盘驱动器的硬件问题。如果您的驱动器太旧,则可能损坏,删除文件或将文件发送到已知状态。
但是,如果您发现问题与硬件无关。类似问题here的github问题。但是,将npm 更新为5.7.1似乎可以解决该问题。
阅读this guide以更新npm。如果不能,请使用npm install --save
。
答案 1 :(得分:0)
这听起来像一个奇怪的问题,更多的是关于数据丢失的问题,而不是npm。
要进行调查,建议您观察文件夹树中的更改,并在删除内容时显示警报。然后至少可以在发生这种情况时缩小范围。也许不是在开发过程中,而是日常工作中需要使用的清理工具。
尝试使用内置工具:从Spotlight启动“文件夹操作设置”或右键单击您的packages文件夹,然后选择服务>文件夹操作设置... 来配置脚本以在Mac中的文件夹更改上运行。如果未触发子目录更改,恐怕您需要...
使用fswatch之类的命令行工具:
$ brew install fswatch
$ fswatch --recursive --timestamp /path/to/modules
您可以按事件类型进行过滤(请参见fswatch docs),但请注意,您同时需要--event Removed
和 --event Renamed
,因为使用Finder回收站是确实是重命名/移动命令。
另请参阅Is there a command like "watch" or "inotifywait" on the Mac?
,了解如何在Mac上使用fswatch
和其他CLI工具。
对于fswatch,没有自定义脚本的变更触发器。您宁愿创建一个运行直到被杀死的shell脚本,并配置fswatch在1个事件发生后退出以立即处理输出:
$WATCHED_PATH="/path/to/node/modules"
while [[ true ]]
do
path=`fswatch --recursive --one-event --event Removed --event Renamed "$WATCHED_PATH"`
applescript="tell app \"System Events\" to display dialog \"Removed $path\""
osascript -e $applescript
done