通过博览会运行的 React Native 应用程序中的守​​望者警告

Saa*_*han 7 reactjs watchman react-native expo

使用 expo 运行 React Native 应用程序时,我在 watchman 上收到此警告。

watchman warning:  opendir(/Users/saashwath/Library/Caches/CloudKit/com.apple.Safari) -> Operation not permitted. Marking this portion of the tree deleted
To clear this warning, run:
watchman watch-del /Users/saashwath ; watchman watch-project /Users/saashwath
Run Code Online (Sandbox Code Playgroud)

如何去掉这个警告。提前致谢:)

Wez*_*ong 7

有些东西要求 watchman 监视您的主目录/Users/saashwath,但/Users/saashwath/Library/Caches/CloudKit/com.apple.Safariwatchman 进程无法访问该目录。

有时这可能是因为某些东西在下面运行sudo并且现在恰好由root拥有,或者更可能在macOS上,当macOS抛出一些提示时,您不允许watchman进程访问您的homedir中的某些目录在此 GitHub 问题中显示:https ://github.com/facebook/watchman/issues/658

现在,让监视者监视您的主目录通常没有多大意义,因此我建议运行此命令来取消该监视:

watchman watch-del /Users/saashwath
Run Code Online (Sandbox Code Playgroud)

除非明确请求,Watchman 通常不会监视该位置,但在某些情况下,它可能决定在看起来像项目边界的地方聚合监视的项目。在默认配置中,如果您碰巧使用 git 跟踪主目录中的点文件,这将使您的主目录成为监视聚合的有效位置。

我通常建议不要让 git 尝试管理你的整个主目录,即使在这个与守望者相关的问题之外!但是,您还可以将 watchman 安装配置为更具限制性。

如果您将以下内容部署到/etc/watchman.json

{
  "root_files": [".watchmanconfig"]
}
Run Code Online (Sandbox Code Playgroud)

并重启watchman( watchman shutdown-server ; watchman watch-list),那么watchman只会认为.watchmanconfig其中有文件的项目是有效的可观看项目。

我相信,.watchmanconfig当你设置它时,React Native 会在应用程序中的适当位置创建一个 json 对象,但如果没有,你需要在该文件中创建一个空的 json 对象来设置它:

echo '{}' > /my/react/project/.watchmanconfig
Run Code Online (Sandbox Code Playgroud)

这将确保您的项目具有可观看性。