问题标签 [watchman]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - 反应原生 ios 构建需要很长时间
我在 Xcode 中构建的 React 本机项目,总是停留在“运行 2 个自定义 shell 脚本中的 2 个”,并且需要将近 5 分钟才能继续。之后,react packager 中的捆绑过程也需要很长时间。
eg : Bundling index.ios.js
[development, non-minified, hmr disabled] ▓▓░░░░░░░░░░░░░░ 18.3% (412/962),差不多一秒就增加一个。但是上次我在 Windows 中构建 react native android 版本,并且捆绑过程非常快。
我已经搜索了一些类似的解决方案,一个解决方案尝试的结果是相同的,有人说是守望问题所以我重新安装watchman
使用brew
,结果也相同,性能没有提高。
RN版本:
反应原生 cli:2.0.1
反应原生:0.48.4
javascript - 当我运行 npm run start 我得到这个错误
当我运行时,npm run start
我收到以下错误:
ERROR watchman --no-pretty get-sockname return with exit code=1, signal=null, stderr= 2018-01-13T17:08:24,417: [0x7fff97db03c0] while computing sockname: failed to create /usr/local/var/ run/watchman/11reed-state: 没有这样的文件或目录
我让它运行良好,但我在捆绑 index.js 文件时遇到了错误,所以我卸载了 watchman 并重新安装,现在我遇到了这个错误。
react-native - 无法启动 Watchman 观看模式
我正在开发一个 React Native 应用程序。我的代码没有错误,但它面临构建问题。当我执行命令 react-native run-android 时,Metro Bundler 中出现错误。错误说:
我还尝试使用命令$yarn
add watchman 将 Watchman 添加到 node_modules。我得到一个提示,它已被弃用。
我应该如何解决错误?
我的 package.json 包含以下内容:
watchman - 删除文件时未通知目录已修改
将 watchman 4.9.0 与 inotify 一起使用。
我订阅为'subscribe', '/home/meta', 'Buffy', {"expression": ["since", "c:1517100837:2861:1:1"],
"fields": ["name", "exists", "oclock", "ctime_ns", "new", "mode"]}
.
当我在目录中创建一个新文件时,我收到一个包含两个条目的通知:一个表示目录已更改,另一个表示有一个新文件可用。
PS:。我说的是在根目录内的目录中创建一个文件。也就是说,我正在监视/home/meta
,我有一个目录/home/meta/test
并创建一个文件/home/meta/test/z
。如果文件是在“根”目录中创建的,我根本不会收到有关该目录的任何通知。
当我删除该文件时,我只收到有关已删除文件的“exists:false”通知,但我没有看到有关目录更改的任何通知。
这很重要,因为我正在将遗留应用程序迁移到 watchman,而我实际上只观察目录更改。当目录更改时,我会向它发出“since”请求以了解实际更改。这不适用于删除。
建议?
谢谢!。
watchman - 守望者:我错过了订阅前发生的文件删除
我在守望者中缺少删除。版本 4.9.0,inotify。
我的测试代码:
我所看到的:
我们创建文件。我们收到新文件和目录更改的通知。好。我们注意到此通知的“时钟”。
我们删除文件。我们收到文件删除的通知。好。不要收到目录更改的通知。
现在想象一下,进程在更新内部细节之前崩溃了,但它记得在步骤 1 中通知的更改(目录更新和新文件的创建)。即事务 1 已处理,但程序在事务 2 处理之前崩溃。
我们现在打开一个新的 watchman 订阅(请记住,我们正在模拟崩溃)并请求自步骤 1 以来的更改。我正在模拟恢复,程序重新启动,注意事务 1 正常(文件存在)并请求更多更改(它应该被删除)。
我希望得到一个文件删除,但我得到......什么都没有。灾难性的。
成绩单:
进程挂起,等待删除通知。
我究竟做错了什么?。
感谢您的时间和知识!
watchman - 守望者:“is_fresh_instance”的精确含义和处理
到目前为止,我将“is_fresh_instance”视为“我不知道以前的历史,所以我再次向您发送所有数据”。当我的“since”为“0”或类似时,这很好用。我得到了一切,我将“is_fresh_instance”解释为这不是增量更新而是完全转储的信号。
但我今天看到了这个。
我正在监视一棵树,其中包含 200 多个目录和 12.000 个文件。我在里面创建了一个新文件。我的文件监视器处于脱机状态(守望者进程正在运行但没有人订阅)。我启动我的文件监视器,它请求一个带有“since”的“增量”转储。我明白了:
在这里,我收到“is_fresh_instance=True”,但收到了增量通知。如何进行?。目录“dir”被标记为“new”(不是),然后我想我应该做一个“查询”来请求内容,但是我不明白为什么我会收到新文件的通知无论如何都应该扫描目录,因为它是“新的”(不是)。
我发现守望者语义真的很混乱。文档导航很糟糕,我没有看到任何我可以研究的例子。
当我得到“is_fresh_instance=True”时,守望者希望我做什么?
这种情况是 100% 可重现的。如果我在订阅过程中创建文件,我会看到“is_fresh_instance=False”。如果我的监视器处于脱机状态,并且当它返回时它会请求带有最新时钟的“since”,我会收到相同的通知(目录和文件),但带有“is_fresh_instance = True”。
帮助!。Python 代码示例?
xcode - .c 和 .m 文件的 Xcode 构建速度很慢
在将 OSX 更新到 High Sierra 并将 Xcode 更新到 9.2.0 之后,大型项目的项目构建时间变得一发不可收拾。构建时间从约 10 分钟到约 120 分钟。
在研究过程中,我注意到 Xcode 产生xcexec
了占用大部分 cpu 使用率的子进程。xcexec
几乎所有时间都在调用系统close
调用。每个xcexec
进程每分钟调用大约 200 万次关闭调用。
在检查xcexec
二进制文件后,这似乎是一个用于启动其他构建操作(例如 clang)的包装工具。
我已经完全重新安装了 Xcode,没有任何变化。构建系统设置为默认值。
是什么导致了这种行为?
macos - automake.rb:29 中的 Brew 错误“未知的正则表达式选项 - har”试图安装 watchman
我正在尝试根据官方文档通过自制软件在 macOS 上安装守望者。
我收到以下错误:
❯ brew 安装守望者
错误:automake:/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/automake.rb:29:未知的正则表达式选项 - har ==> 搜索类似命名的公式...这个类似命名的公式是找到:automake 要安装它,运行: brew install automake ==> 正在搜索水龙头... 错误:在水龙头中找不到公式。
在那之前我确实跑过brew update
。另外,我确实跑了brew install automake
。都没有帮助。问题:这里似乎有什么问题?我是否缺少依赖项?
reactjs - 我需要在 react-native 项目中保留 .watchmanconfig 文件吗
默认反应原生项目生成的.watchmanconfig
文件只是空对象{}
,我可以安全地删除它吗?
一个子问题是:是否有任何守望者配置我可以做/参考以以某种方式改善 react-native 项目体验?
react-native - 守望者抓取失败。使用节点爬虫重试一次
守望者抓取失败。使用节点爬虫重试一次。这通常发生在守望者不运行时。在项目的根文件夹中创建一个空
.watchmanconfig
文件,或者在项目中初始化一个 git 或 hg 存储库。错误:watchman --no-pretty get-sockname 返回,退出代码=1,信号=null,stderr= 2018-03-23T11:33:13,360: [0x7fff9755f3c0] /usr/local/var/run/watchman 的所有者/root-state 是 uid 501,与您的 euid 0 不匹配