这是在一次更换电脑为云电脑后运行项目中出现的错误,虽然报错,但是项目依旧可以运行,并且浏览器可以打开网页,就是更改代码后,ctrl + s,代码不会运行了,很麻烦,网上都是linux的攻略,没有Windows的,找了很久,终于找到了可用的解决方法,拿走不谢。
本质原因:由于文件系统监视器 chokidar 在某些情况下无法正常工作而引起的。
具体原因:项目代码和编译软件不在一个地方引起的,比如,node安装在本地,项目代码在服务端,编译运行的时候就会这样,(我使用的是服务器虚拟Windows,node在c盘,代码在云端,不在虚拟Windows上,所以产生了这样的报错)
解决方案:
最简单的方法就是把项目代码放在安装node的同一个盘符下,另外提供一些针对原理的解决方法:
-
尝试升级 chokidar 版本:在项目根目录下运行
npm install chokidar@latest
或yarn add chokidar@latest
来更新 chokidar。npm install chokidar@latest // 或者运行 // yarn add chokidar@latest
-
尝试增加系统文件监视器的限制:在 Windows 平台上,可能需要在 PowerShell 中以管理员身份运行以下命令
fsutil behavior set disablelastaccess 0
。fsutil behavior set disablelastaccess 0
在 macOS 上,可以尝试使用
sudo sysctl -w kern.maxfiles=5242880
和sudo sysctl -w kern.maxfilesperproc=524288
命令来增加系统文件监视器的限制。sudo sysctl -w kern.maxfiles=524288 sudo sysctl -w kern.maxfilesperproc=524288
-
尝试减少文件系统监视范围:在项目根目录下创建
.env
文件,并添加以下内容CHOKIDAR_USEPOLLING=true
,这将启用轮询模式,这样 chokidar 就不会监视整个文件系统,而是只监视你的项目目录。