我正在设置一个使用SASS的项目,它使用FSEvents来防止轮询磁盘.但是,这似乎与RVM不相称.这意味着当我跑步时,sass --watch
我得到这个警告:
Warning: Unable to load CarbonCore. FSEvents will be unavailable.
我意识到它仍然可以工作,但我不想不断地轮询我的磁盘.我想让它与FSEvents一起工作.我能找到的最好的信息就是这个帖子:
http://groups.google.com/group/compass-users/browse_thread/thread/df7d9d0da9ec1eb1
我按照Brandon Mathis的描述重新安装了我的RVM Ruby(使用1.9.2)并下载了链接的RubyCocoa.但是,我在安装RubyCocoa的第一步时遇到错误:
[rvm 1.9.2] ~/Downloads/RubyCocoa-1.0.0 $ ruby install.rb config --build-universal=yes
install.rb: entering config phase...
create ext/rubycocoa/extconf.rb
create framework/GeneratedConfig.xcconfig
create framework/src/objc/Version.h
create tests/Makefile
---> framework
create /Users/xxx/Downloads/RubyCocoa-1.0.0/framework/src/objc/osx_ruby.h ...
config failed
hook /Users/xxx/Downloads/RubyCocoa-1.0.0/framework/post-config.rb failed:
No such file or directory - /Users/xxx/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/x86_64-darwin10.6.0/ruby.h
try 'ruby install.rb --help' for usage
Run Code Online (Sandbox Code Playgroud)
看起来问题源于这是RubyCocoa的旧版本(我注意到丢失的文件在路径中有1.9.1),但在Google Groups帖子中,Brandon Mathis特意说使用他链接的版本而不是最新版本一.
有没有人知道如何配置这个,或者链接到最近的,希望更简单和更清晰的指南,让FSEvents使用RVM?
有问题的版本:
谢谢!
我一直在玩我的FSEvents
一个小应用程序来同步我的应用程序的内容与硬盘驱动器上的内容(基本上,它是一个小图像查看器,我希望其内容在硬盘内容更改时更新)
我使用kFSEventStreamCreateFlagFileEvents
标志创建了我的流,但我很难弄清楚这些事件是如何由操作系统(或内核,或其他)生成的.不幸的是,没有关于使用此标志生成的事件的文档...他们似乎是10.7的新手,但仍未记录.
所以,我的主要问题是"重命名".当我正在进行简单的重命名时,会向我的回调发送2个kFSEventStreamEventFlagItemRenamed事件.一个包含旧文件名,第二个包含新文件名.重命名一批文件时会出现问题,这些事件可能不是顺序的.例如,它有以下情况:
我可能会按此顺序收到事件:
当你遇到第二个重命名事件时似乎没有任何方法可以获得第一个重命名事件的ID ...所以我做的是:当接收"重命名"事件时,我做一个stat()与文件名.如果stat成功返回,则表示它是新文件名.如果没有,这意味着它是旧的.我仍然没有办法链接这两个事件,但至少我可以通过删除旧文件并添加新文件来解决.
所以,我基本上有两个问题:
首先是:我完全失明了,没有看到通过fsevents正确捕捉"重命名"事件的明显方法吗?
第二个我:我有时会有一个奇怪的错误,而不是只有2个重命名的事件,3个被发送!所以我得到一个文件添加两次...我不确定这是不是一个错误,或者如果这是因为我完全错过了使用kFSEventStreamCreateFlagFileEvents
标志的fsevent API ...
欢迎任何帮助,我完全没有想法来解决这个问题!
我正在使用Cocoa开发一个应用程序.我想不断检查特定位置的文件内容是否发生了变化(如FileSystemWatcher
在.NET中).请有人给我一个解决方案
根据Apple文档,在回调中FSEvents
,
/* These flags are only set if you specified the FileEvents */
/* flags when creating the stream. */
kFSEventStreamEventFlagItemCreated = 0x00000100,
kFSEventStreamEventFlagItemRemoved = 0x00000200,
kFSEventStreamEventFlagItemInodeMetaMod = 0x00000400,
kFSEventStreamEventFlagItemRenamed = 0x00000800,
kFSEventStreamEventFlagItemModified = 0x00001000,
kFSEventStreamEventFlagItemFinderInfoMod = 0x00002000,
kFSEventStreamEventFlagItemChangeOwner = 0x00004000,
kFSEventStreamEventFlagItemXattrMod = 0x00008000,
kFSEventStreamEventFlagItemIsFile = 0x00010000,
kFSEventStreamEventFlagItemIsDir = 0x00020000,
kFSEventStreamEventFlagItemIsSymlink = 0x00040000
Run Code Online (Sandbox Code Playgroud)
但是,我三次检查kFSEventStreamCreateFlagFileEvents
调用时没有设置标志
FSEventStreamRef FSEventStreamCreate(
CFAllocatorRef allocator,
FSEventStreamCallback callback,
FSEventStreamContext *context,
CFArrayRef pathsToWatch,
FSEventStreamEventId sinceWhen,
CFTimeInterval latency,
FSEventStreamCreateFlags flags);
Run Code Online (Sandbox Code Playgroud)
但无论我做什么,kFSEventStreamEventFlagItem*
当事件从FSEvents …
有一个讨论,连续的FSEventStreamEventId可用于检测kFSEventStreamEventFlagItemRenamed事件的旧名称和新名称.这似乎适用于我对基本重命名案例的测试.但是,这似乎在以下情况中崩溃:
这会导致事件:
2012-11-06 18:13:01.246 test[45080:1603] event [60095818] [10800] [/Users/tim/test_dir/B]
2012-11-06 18:13:01.248 test[45080:1603] event [60095824] [10900] [/Users/tim/test_dir/C]
2012-11-06 18:13:01.253 test[45080:1603] event [60095825] [10800] [/Users/tim/test_dir/A]
Run Code Online (Sandbox Code Playgroud)
事件位0x10800 ="文件重命名"和0x10900 ="文件创建/重命名"
(来自FSEvents.h)
kFSEventStreamEventFlagItemCreated = 0x00000100
kFSEventStreamEventFlagItemRenamed = 0x00000800
kFSEventStreamEventFlagItemIsFile = 0x00010000
Run Code Online (Sandbox Code Playgroud)
在这种情况下,似乎A被重命名为B的事实已经丢失.
我希望看到像A的60095817 10800这样的事件.
任何人都可以确认这种行为,如果有的话,是否有人对如何处理这种限制有任何想法,而不必维护目录内容的单独表示并重新扫描/比较整个目录?
我正在测试OS X 10.8.2.
编辑:刚刚发现另一个讨论,表明这可能是一个更多的重命名问题.
我正在尝试在我的沙盒应用程序中使用FSEvents来监视某些目录.我实现了以下类:
@implementation SNTracker
- (id)initWithPaths:(NSArray *)paths {
self=[super init];
if (self) {
trackedPaths=paths;
CFTimeInterval latency=1.0;
FSEventStreamContext context={0,(__bridge void *)self,NULL,NULL,NULL};
FSEventStreamRef eeventStream=FSEventStreamCreate(kCFAllocatorDefault,&callback,&context,(__bridge CFArrayRef)trackedPaths,kFSEventStreamEventIdSinceNow,latency,kFSEventStreamCreateFlagUseCFTypes|kFSEventStreamCreateFlagWatchRoot|kFSEventStreamCreateFlagFileEvents);
FSEventStreamScheduleWithRunLoop(eeventStream,[[NSRunLoop mainRunLoop] getCFRunLoop],kCFRunLoopDefaultMode);
FSEventStreamStart(eeventStream);
}
return self;
}
static void callback(ConstFSEventStreamRef streamRef,void *clientCallBackInfo,size_t numEvents,void *eventPaths,const FSEventStreamEventFlags eventFlags[],const FSEventStreamEventId eventIds[]) {
NSLog(@"asd");
}
Run Code Online (Sandbox Code Playgroud)
问题是"asd"永远不会被打印出来(即永远不会调用回调函数).当我在Xcode中的主要目标摘要中禁用"启用应用程序沙箱"时,将调用回调.难道我做错了什么?我给沙盒应用程序的唯一权利是对用户所选文件的读写访问权限.
什么时候设置旗帜?
KFSEventStreamEventFlagItemInodeMetaMod = 0x00000400
谢谢!
OSX仅fsevents
列在其中,npm
shrinkwrap
因为它被拉入chokidar
.我们的产品是基于Linux的,并没有造成任何麻烦,显然OSX开发人员也很好,但它打破npm install
了我的Win x64环境.
我该如何解决这个问题?
C:\Users\User\Documents\splive>npm install
(node:2888) fs: re-evaluating native module sources is not supported. If you are using the graceful-fs module, please update it to a more recent version.
> fsevents@1.0.8 install C:\Users\User\Documents\splive\node_modules\fsevents
> node-pre-gyp install --fallback-to-build
node-pre-gyp ERR! Tried to download: https://fsevents-binaries.s3-us-west-2.amazonaws.com/v1.0.8/fse-v1.0.8-node-v48-win32-x64.tar.gz
node-pre-gyp ERR! Pre-built binaries not found for fsevents@1.0.8 and node@6.3.0 (node-v48 ABI) (falling back to source compile with node-gyp)
Traceback (most recent call last):
File "C:\Users\User\node_modules\npm\node_modules\node-gyp\gyp\gyp_main.py", line …
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建我的第一个React应用,并按照Facebook教程进行操作,这看起来非常简单,但是在我的Mac中却失败了。
这是我的环境,看来它符合要求:
Environment Info:
System:
OS: macOS 10.14.3
CPU: (4) x64 Intel(R) Core(TM) i7-4558U CPU @ 2.80GHz
Binaries:
Node: 12.0.0 - /usr/local/bin/node
Yarn: 1.15.2 - /usr/local/bin/yarn
npm: 6.9.0 - /usr/local/bin/npm
Browsers:
Chrome: 73.0.3683.103
Firefox: 66.0.3
Safari: 12.0.3
npmPackages:
react: Not Found
react-dom: Not Found
react-scripts: Not Found
npmGlobalPackages:
create-react-app: Not Found
Run Code Online (Sandbox Code Playgroud)
但是,当我运行第一个命令时,它失败并出现以下错误:
npx create-react-app my-app
npx: instaló 91 en 4.374s
Creating a new React app in /Users/gachapin/sampleReact/my-app.
Installing packages. This might take a couple of minutes.
Installing react, react-dom, and …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在 Gitlab CI 上构建我的 Angular 应用程序,并使用 安装依赖项npm ci
,但遇到错误“无法从汇总访问 fsevents ”。我尝试过npm ci --no-optional
,但仍然出现此错误。我该如何解决?
fsevents ×10
cocoa ×5
macos ×5
npm ×2
filesystems ×1
monitor ×1
monitoring ×1
node-modules ×1
node.js ×1
osx-lion ×1
rollupjs ×1
ruby ×1
rvm ×1
sass ×1