node.js fs.watch不会在随后的目录删除中触发

时间:2018-12-19 16:19:47

标签: node.js fs watch

我想在我的一个模块中的<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> <persistence-unit name="oneschema" transaction-type="JTA"> <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> <properties> <property name="driverClass" value="${db.driver}" /> <property name="jdbcUrl" value="${datasource.baseurl}/SCHEMAONE" /> <property name="user" value="${datasource.username}" /> <property name="password" value="${datasource.password}" /> </properties> </persistence-unit> <persistence-unit name="anotherchema" transaction-type="JTA"> <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> <class>com.company.AccountLog</class> <exclude-unlisted-classes>true</exclude-unlisted-classes> <properties> <property name="driverClass" value="${db.driver}" /> <property name="jdbcUrl" value="${datasource.baseurl}/SCHEMANOTHER" /> <property name="user" value="${datasource.username}" /> <property name="password" value="${datasource.password}" /> </properties> </persistence-unit> </persistence> 上设置简单的手表:

__dirname

最终,我要做的是创建一个fs.watch(__dirname, {recursive:true}, () => {console.log('Something changed!')}) 的tarball,只要该目录中发生任何更改,或者目录本身被删除,我都希望将该tarball解压缩到该位置以恢复所有文件。 br /> 一切都按预期进行(创建tarball并在文件更改或__dirname本身被删除时将其解压缩到位)。
一件奇怪的事情是:如果我删除整个__dirname,则手表会触发回调,而回调会将其恢复为原始状态。但是当我再次删除它时,手表不再触发。没有错误,只是没有检测到删除!

测试它的替代方法是:
1.打开终端 A
2. __dirname
3. mkdir foo && cd foo
4. git init
5. mkdir bar && cd bar
6.创建具有以下内容的npm init -y

index.js

7。承诺一切
8.打开另一个终端( B )并导航到在1中创建的const fs = require('fs') fs.watch(__dirname, { recursive: true }, () => { console.log('something changed!') }) 目录。
9.在 A 中,运行:foo
10.在 B 中运行node index.js(在 A 中,您将看到来自监视回调的日志)
11.在 B 中运行rm -rf bar(在 A 中,您将从监视回调中看到更多日志)
12.再次在 B 中运行git reset --hard HEAD。这次没有再登录 A 了,还没有触发监视回调!

这是预期的行为吗?我正在使用节点rm -rf bar和macOS v10.12.0(High Sierra)。
任何帮助表示赞赏:)

0 个答案:

没有答案