问题标签 [chokidar]

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.

0 投票
1 回答
9355 浏览

javascript - 类型错误:path.join 不是函数

如果我拿走我用以下包装代码的函数,我发布的代码就可以工作:

但是如果运行下面的代码。我确实在 path.join 不是函数的情况下收到此错误。正如所见,我想在添加文件时一直运行 watcher.on 中的代码。当我添加文件时,代码会做出反应,但我总是收到以下错误。我是否设置了 watcher.on 代码错误或导致错误的原因?

文件 C:\myproject\instances\b53pd4574z8pe9x793go\New Text Document.txt 已添加 (node:14360) UnhandledPromiseRejectionWarning: TypeError: path.join is not a function

完整代码:

0 投票
1 回答
71 浏览

node.js - 在节点js中每隔固定时间收集文件中的更改

我有一个外部程序不时将数据流式传输到 csv 文件(但退出很多)。我想每 10 秒收集一次所有更改的数据并对其进行一些处理。意味着我只想处理我以前没有处理过的行。

这是基本代码:

现在,我尝试使用 chokidar 和 fs.watch,但我不知道在这种情况下如何使用它们。

0 投票
1 回答
231 浏览

node.js - Node Js:嵌套 API 调用:监视文件目录,从每个文件中读取数据并从 API 获取 ID,在另一个 API 中发布带有 ID 的数据

我在尝试着,

  1. 持续监视目录中的文件,
  2. 如果有任何文件进入,根据文件类型(从文件名推断),调用 GET api 获取 ID/密钥
  3. 使用另一个 API 中的密钥发布数据。
  4. 将发布数据的文件移动到另一个目录

我用过 Chokidar,请求承诺包。

问题是,只要在目录中粘贴了多个文件,就会快速调用 API,这样即使在提交第一个文件的数据之前,第二个文件也会被处理。这会导致从第一个 API 获取 ID 的问题。这两个文件现在都将具有相同的 Key/ID。请告诉我,如何解决这个问题,以便我们从每个文件中获取唯一的数据 ID。

这是我的代码:

0 投票
0 回答
1999 浏览

reactjs - 我们真的需要 VSCode 观察者吗?它有什么作用?如何完全阻止这种情况?

所以我一直在使用 VSCode,我喜欢它所构建的功能。使用 sublime,我不得不做太多的手动工作。但是 vscode 是 CPU 密集型的,主要是因为文件观察器,我想了解这个文件观察器的作用是什么?在反应代码中,我们已经有热重载,我们真的需要这个吗?以及如何一起阻止这一切。

我试图在 vscode 设置 files.watcherExclude 中添加 * 模式来停止 filewatcher,但我不知道它是否真的在工作。

0 投票
3 回答
657 浏览

node.js - 如何使用 chokidar 忽略子目录中的文件

我有这个目录结构

我想忽略index.js每个文件夹中的,但我没有得到它,我已经尝试了多种方式

已经试过了: './components/**/index.js', './components/*/index.js', 'components/*/index.js', 'components/**/index.js', 'ROOT_PATH + '/**/index.js'

任何人都知道如何使它工作?

0 投票
1 回答
673 浏览

javascript - 如何使用电子释放忽略多个目录和文件

我有一个使用电子重载的电子项目,文件结构是:

我知道我可以通过ignored在 main.js 中设置要求电子重新加载选项来忽略目录。这使用 chokidar 进行过滤,这里描述了忽略的选项

但我不知道如何忽略多条路径。

我试图像这样要求电子重新加载:

但是当我在应用程序中更改文件时 public/templates/test/正在重新加载。

  • electron 5.0.6
  • electron-reload 1.5.0

在此先感谢凯文

0 投票
0 回答
78 浏览

node.js - 观看完成的视频编码的最佳做法是什么?

TL;博士

我不确定使用 Chokidar 完成视频编码时识别的最佳方法。考虑到编码器构建视频文件的不同方法,容纳所有这些文件的最佳方式是什么?

语境

我为我们的办公室开发了一个工作流程,使我们能够在 Adob​​e Premiere Pro 中快速排队编码作业。为了在本地排队,我使用了 Premiere 的 CEP API。我可以轻松地将作业发送到 Adob​​e Media Encoder(在同一台机器上),它会自动将视频文件编码到相关项目目录。这很好用。

为了将编码作业排队到 LAN 工作站上,我采用了不同的方法,因为 CEP API 不允许在本地机器之外进行任何扩展。相反,我使用 Adob​​e Media Encoder 的监视文件夹来检测添加到我们 NAS 上的子文件夹中的 Premiere 项目文件(一切都在 NAS 上)。这也很好用。

不幸的是,我不知道以与本地排队相同的方式将排队的编码输出到相关项目目录的方式。我试图通过观察一个公共目录并移动完成的文件来找到一种方法。

由于我排队的每个视频文件名都有这样的结构: “projectName_sequenceName_givenName_renderType.mp4/.mxf”我已经能够轻松地移动带有这些信息的文件。但是,我正在努力适应不同编码过程使用的不同方法。不同的编码器 - X264、MainConcept H264 等 - 以不同的方式编码到磁盘。

使用 Chokidar,我观察了不同的编码器如何构建他们的文件:

示例 #1:

如果我启动DnXHR MXF编码,它将首先创建最终的 .MXF 容器,然后填充它。完成后,它会写入 sidecar .XMP 文件。如果编码失败或被取消,sidecar 文件将不会被写入。

示例 #2:

如果我启动TMPG x264编码,它将首先创建最终的 .mp4 容器,然后创建一个临时文件:附加“.mp4_00_”。然后它将一些初始元数据写入最终容器,开始编码到“.mp4_00_”并根据文件大小创建额外的临时文件,“_.mp4_01_”等。最后它向容器写入一些附加信息,然后到临时文件,然后删除临时文件。如果编码失败或被取消,文件将被删除。

示例#3:

如果我启动MainConcept H264 编码(Premiere 的默认设置),它将首先创建音频临时文件,在本例中为“.aac”。然后创建另一个临时文件“.mkv.md0”。在编码的中途,它将创建视频容器“.m4v”,开始对其进行编码,创建更多临时文件“.md7/md6”,创建最终容器“.mp4”以及“sbjo.tmp”,复制将“.mkv”文件和“.aac”放入“.mp4”容器中,添加一个“ 00 ”文件,很快将其删除,然后完成“.mp4”元数据的写入。其中一些发生得非常快,而 Chokidar 并不总是能接受它。除非编码器不一致。

这是我观察到的三种编码类型,它们是我们需要和使用的三种。我想我可以以不同的方式观看它们,但我担心的是,如果我们切换编码器,我将不得不重写代码以适应它们。Adobe Media Encoder 具有的监视文件夹功能可以识别文件何时完成编码,然后再尝试使用它们。我没有测试过每种格式,但是很好。Media Encoder 会适应每个独特的编码过程吗?只是轮询锁定的文件?还是我缺少什么?

我目前的代码适用于 DNxHR MXF,前提是它们没有失败或被取消。它与 h264/x264 示例作斗争。由于文件是在对临时文件进行编码时创建并保持不变的,因此 chokidar 将注册“添加”。由于文件被锁定,移动失败。显然,当简单地复制或移动完成的视频文件时,这可以正常工作。

0 投票
1 回答
876 浏览

javascript - 查看目录中的新文件时 CPU 使用率高

目前我正在使用 chokidar 来观看目录。该目录有大量文件,而且它也在不断地被写入。我也在使用轮询,因为我需要查看网络上的文件夹。我注意到当我开始查看目录时,我的 CPU 使用率非常高。

据我了解,还为目录中的每个文件创建了观察者?

我只需要在添加文件时收到通知,我不需要监视文件本身的任何更改。所以我觉得为我需要的东西创造了很多开销。这对 chokidar 有可能吗?或者我应该为这些需求寻找另一种解决方案。

更新:添加了我如何创建观察者实例的片段。我真的没有做任何特别的事情。我注意到,一旦我创建了观察者,CPU 使用率就会飙升。该目录中有大约 20k 个文件。

0 投票
3 回答
475 浏览

javascript - 从 chokidar.watch(path_file).on('change', ...) 中的 fs.readFile 获取空字符串

我有以下非常简单的Node项目:

https://github.com/tlg-265/chokidar-issue

在此处输入图像描述

它基本上负责检测文件上的更改:

/profiles/bill-gates.json

并在此之后执行操作。

为此,我有以下文件:

/profile-watcher.js

当我运行项目时:

并在文件中进行以下修改:/profiles/bill-gates.json

  • 修改1:Bill Gates -> Bill Gates ABC
  • 修改2:Bill Gates ABC -> Bill Gates ABC DEF

它工作正常,将此文件的内容输出到控制台。

但是当我进行下一次修改时:

  • 修改3:Bill Gates ABC -> Bill Gates ABC DEF GHI

然后我收到以下错误:

/profiles/bill-gates.json(标志UTF-8 / CRLF:)

顺便说一句,如果我从正常状态更改CRLFLF正常状态,我可以在它崩溃之前再做一些修改。

我的印象是,出于某种原因,文件:/profiles/bill-gates.json在某个时候被锁定,当Node尝试读取它时,它返回一个空字符串,因为它被锁定了。

任何关于如何使这项工作在几次尝试后不会崩溃的想法?

谢谢!

0 投票
0 回答
417 浏览

node.js - 有条件地运行 chokidar 命令

这是我第一次使用 chokidar,我想知道如何从 npm 脚本有条件地运行 chokidar 命令。我需要运行两个不同的脚本,一个在启动时运行,另一个在更改时运行。我已将 chokidar-cli 设置为我的开发依赖项之一,但无法理解如何让它在两个不同的时间使用两个不同的命令。

虽然没有太多代码可以分享,但我尝试了以下代码,即使更改也不起作用: