问题标签 [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 投票
0 回答
453 浏览

node.js - 检测是否在Nodejs中添加而不是修改文件

我正在节点中编写一个程序来检测添加到磁盘的文件。我不能对整个磁盘使用 chokidar,如果有很多信息需要很长时间。我正在将 chokidar 与 node-watch 混合使用,当 node-watch 检测到一个文件时,我将其添加到 chokidar 并且我可以关注该文件。问题是 node-watch 只检测到更新(修改和创建),我需要将文件添加到 chikidar 只有当它不存在时(创建),但如果它被更新,它也会被添加。我怎样才能只检测到复制的文件?提前致谢。

0 投票
0 回答
1001 浏览

node.js - Node.js - 检测重命名文件/目录事件

我需要检测特定文件/目录的重命名事件。我正在使用chokidar - 这个触发器unlinkadd事件,因此无法使用它。

我也试过fs.watch- 这个触发两个rename事件,但不幸的是第一个包含原始名称,第二个包含新名称 - 如果同时触发许多重命名,这种方法会变得不可靠。

我使用的 fs.watch 片段:

Node.js 中是否有任何可靠的方法(理想情况下是一个具有 2 个参数的重命名事件 - 原始名称和新名称)来检测文件/目录重命名?

0 投票
1 回答
1913 浏览

node.js - Node watch on a docker-compose volume does not register delete events

I have a simple Node.js HTTP server running inside a docker container. One of the basic structural folders uses volume from docker-compose.yml to mirror the host and container directory.

Within the Node server, I have a watcher set up to track changes within the volumed directory, using the NPM package chokidar (although I have tried multiple other watchers already with the same result).

When I run the Node server locally, the watcher correctly picks up changes to the watched directory. In this case, chokidar is reporting these as addDir or unlinkDir, which correspond to a scaffolding script I run to add or remove new folders into the directory (which is served later via express.static()).

STDOUT:

However, when I port the application into a docker container, the behavior changes in a really strange way. I continue to get addDir events when I create new folders in the volumed directory, but I no longer receive unlinkDir (delete) events!. Note that this only happens if I add / delete a file within the volumed directory on the host machine. If I add / delete a file within that directory inside the docker container, my watcher correctly reports all of these events.

In either case, the volumed directory correctly mirrors itself. E.G. the files are actually deleted or added, and I can verify their existence on the host and by shelling into the docker container and running ls.

Any docker geniuses out there with sage wisdom on why this is happening?

KEY STUFF:

OS X 10.13.6

Docker Toolbox:

  • Docker 18.03.0-ce
  • docker-maching 0.14.0
  • docker-compose 1.20.1
  • virtualbox 5.2.18r124319

Dockerfile:

Docker-compose.yml:

0 投票
1 回答
187 浏览

node.js - 如何在不声明新变量的情况下正确更新 chokidar 文件选择?

假设我们创建了 chokidar 实例,但是应该监视的文件选择已经改变。如果我不想创建新变量,只需将具有新文件选择的新 chokidar 观察程序分配给同一变量就足够了吗?当然,在下面的代码中,我希望filesSelection1不再被观看。

0 投票
1 回答
598 浏览

javascript - nodejs在更改时重新导入文件

我的主要代码在 chokidar 监视文件夹下,当文件更改时,它会发出事件

主要脚本是这个

这是文件 test.ts

更改 test.ts 时需要重新导入文件,例如,我需要这个

启动脚本

输出“aaa”

将 test.ts 从 "console.log("aaa")" 更改为 "console.log("bbb")"

输出“bbb”

0 投票
0 回答
352 浏览

node.js - 在 Node.js 上跨平台开发的路径中,我是否应该始终用正斜杠替换反斜杠?

曾经,我的chokidar观察者(包裹到gulp.watch())停止工作。经过实验和调试,我发现原因是全局中的双反斜杠:

(当然,我不会手动在上面的 glob 中编写绝对路径 - 我是通过编程方式生成的。)

我几乎没有使用基于 UNIX 的操作系统的经验,但我希望我的代码可以跨平台工作。如果下面的代码适用于 Windows、Linux 和 Mac OS,我想我应该始终在我的 Node.js 程序中将反斜杠转换为正斜杠——这是最安全的方式。我的假设对吗?

另外,我发现像这样的解决方案path.normalize()并不总是能给出预期的结果。是唯一的保存方法来保证仅在路径中.replace(/\\/g, '/')使用正斜杠吗?


更新:新的实验结果

以下都不起作用:

作品。

0 投票
1 回答
488 浏览

javascript - 使用 chokidar 监视文件,参数“忽略”的正则表达式无效

我正在使用 chokidar 来观看以 (.js|.jsx|.scss) 结尾的文件,如下所示,但 RegEx 不起作用。如果只是运行/^(?!.*(?:\.jsx?|\.scss)$).*$/,它工作正常。

0 投票
0 回答
455 浏览

node.js - 在 node.js 中删除 require.cache 后仍然读取缓存文件

我使用 chokdir 并监视特定文件夹,更改后,我删除了一些缓存文件,如下所示:

在 chrome 检查器中,当我检查我的代码时,我看到我的 api 更改正确,但是当我运行我的 api 时,我得到一个带有黄色背景颜色的旧文件,如下所示:我的控制器名称是HomeController但文件更改后,我看到VM1407 HomeController 做你知道是什么问题吗?我的控制器名称之前的 VM 是什么?

在此处输入图像描述

0 投票
1 回答
417 浏览

javascript - chokidar 忽略除 xml 文件之外的所有内容

当谈到Chokidar配置时,我想设置选项。我想忽略除 xml 文件之外的所有内容。

一个可能的解决方案是

使用 Chokidar 监视特定的文件扩展名

但是有没有办法将ignoredJSON 配置文件的属性设置为“忽略除 .xml 文件之外的所有内容”,而不是通过代码进行设置?


我试图去这个代码

watcher.on('add', func)事件会在每个文件扩展名上触发。

0 投票
0 回答
397 浏览

javascript - TypeError: watcher.on(...) 不是函数

运行以下代码时出现此错误。我不确定代码可能有什么问题?

TypeError: watcher.on(...) 不是函数