用NPM安装Inotify

我对nodeJS相当陌生,我试图使用节点包pipe理器(NPM)安装名为inotify的包。

在安装NPM之后(在OSX Lion上),我尝试用命令安装inotify:

sudo npm安装inotify

我得到以下错误:

npm http GET https://registry.npmjs.org/inotify npm http 304 https://registry.npmjs.org/inotify > inotify@0.2.2 install /usr/local/lib/node_modules/inotify > node-waf configure build Checking for program g++ or c++ : /usr/bin/g++ Checking for program cpp : /usr/bin/cpp Checking for program ar : /usr/bin/ar Checking for program ranlib : /usr/bin/ranlib Checking for g++ : ok Checking for node path : not found Checking for node prefix : ok /usr/local/Cellar/node/0.6.6 Checking for program node : /usr/local/bin/node Checking for function inotify_init : not found /usr/local/lib/node_modules/inotify/src/wscript:11: error: the configuration failed (see '/usr/local/lib/node_modules/inotify/build/config.log') npm ERR! error installing inotify@0.2.2 npm ERR! inotify@0.2.2 install: `node-waf configure build` npm ERR! `sh "-c" "node-waf configure build"` failed with 1 npm ERR! npm ERR! Failed at the inotify@0.2.2 install script. npm ERR! This is most likely a problem with the inotify package, npm ERR! not with npm itself. npm ERR! Tell the author that this fails on your system: npm ERR! node-waf configure build npm ERR! You can get their info via: npm ERR! npm owner ls inotify npm ERR! There is likely additional logging output above. npm ERR! npm ERR! System Darwin 11.2.0 npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "inotify" npm ERR! cwd /Users/username/code npm ERR! node -v v0.6.6 npm ERR! npm -v 1.1.4 npm ERR! code ELIFECYCLE npm ERR! message inotify@0.2.2 install: `node-waf configure build` npm ERR! message `sh "-c" "node-waf configure build"` failed with 1 npm ERR! errno {} npm ERR! npm ERR! Additional logging details can be found in: npm ERR! /Users/username/code/npm-debug.log npm not ok 

有人可以帮我解决这个问题吗?

inotify模块不会生成,因为它找不到inotify_init 。 这是因为inotify在OS X上不可用。

OS X上的FSEvents API提供了类似的function,但它是完全不同的API。 inotify模块不会在这种情况下工作。

根据你想要做什么, fs.watch可能适合你的需要。 它抽象出平台差异:

  • 在Linux系统上,这使用inotify
  • 在BSD系统(包括OS X)上,这使用kqueue
  • 在SunOS系统(包括Solaris和SmartOS)上,它使用事件端口。
  • 在Windows系统上,此function取决于ReadDirectoryChangesW