TooTallNate / node-time

"time.h" bindings for Node.js
MIT License
381 stars 84 forks source link

cant install #59

Closed jdsiddon closed 10 years ago

jdsiddon commented 10 years ago
this is the error i get when i npm install it
time@0.10.0 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the time@0.10.0 install script.
npm ERR! This is most likely a problem with the time package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
ferryphang commented 10 years ago

I get this error too and didnot find the solution yet

dustin-lennon commented 10 years ago

Same here as well.

TooTallNate commented 10 years ago

You guys, there's not enough here for me to go off of. Please post the full output from the npm install.

dustin-lennon commented 10 years ago
D:\Dev\chatbot\node_modules\time>node "C:\Program Files\nodejs\node_modules\npm\
bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild
Building the projects in this solution one at a time. To enable parallel build,
please add the "/m" switch.
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.Cpp.Platform.t
argets(64,5): error MSB8020: The build tools for Visual Studio 2010 (Platform T
oolset = 'v100') cannot be found. To build using the v100 build tools, please i
nstall Visual Studio 2010 build tools.  Alternatively, you may upgrade to the c
urrent Visual Studio tools by selecting the Project menu or right-click the sol
ution, and then selecting "Upgrade Solution...". [D:\Dev\chatbot\node_modules\t
ime\build\time.vcxproj]
gyp ERR! build error
gyp ERR! stack Error: `C:\Program Files (x86)\MSBuild\12.0\bin\msbuild.exe` fail
ed with exit code: 1
gyp ERR! stack     at ChildProcess.onExit (C:\Program Files\nodejs\node_modules\
npm\node_modules\node-gyp\lib\build.js:267:23)
gyp ERR! stack     at ChildProcess.EventEmitter.emit (events.js:98:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:807:
12)
gyp ERR! System Windows_NT 6.2.9200
gyp ERR! command "node" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modu
les\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd D:\Dev\chatbot\node_modules\time
gyp ERR! node -v v0.10.28
gyp ERR! node-gyp -v v0.13.0
gyp ERR! not ok
npm ERR! time@0.10.0 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the time@0.10.0 install script.
npm ERR! This is most likely a problem with the time package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls time
npm ERR! There is likely additional logging output above.

npm ERR! System Windows_NT 6.2.9200
npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nod
ejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "time"
npm ERR! cwd D:\Dev\chatbot
npm ERR! node -v v0.10.28
npm ERR! npm -v 1.4.9
npm ERR! code ELIFECYCLE
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     D:\Dev\chatbot\npm-debug.log
npm ERR! not ok code 0

Contents of npm-debug.log:

0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files\\nodejs\\\\node.exe',
1 verbose cli   'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli   'install',
1 verbose cli   'time' ]
2 info using npm@1.4.9
3 info using node@v0.10.28
4 verbose node symlink C:\Program Files\nodejs\\node.exe
5 warn package.json node-twitchtv@0.0.4 No repository field.
6 warn package.json util@0.10.3 util is also the name of a node core module.
7 verbose cache add [ 'time', null ]
8 verbose cache add name=undefined spec="time" args=["time",null]
9 verbose parsed url { protocol: null,
9 verbose parsed url   slashes: null,
9 verbose parsed url   auth: null,
9 verbose parsed url   host: null,
9 verbose parsed url   port: null,
9 verbose parsed url   hostname: null,
9 verbose parsed url   hash: null,
9 verbose parsed url   search: null,
9 verbose parsed url   query: null,
9 verbose parsed url   pathname: 'time',
9 verbose parsed url   path: 'time',
9 verbose parsed url   href: 'time' }
10 silly lockFile 714eea0f-time time
11 verbose lock time C:\Users\Dustin\AppData\Roaming\npm-cache\714eea0f-time.lock
12 silly lockFile 714eea0f-time time
13 silly lockFile 714eea0f-time time
14 verbose addNamed [ 'time', '' ]
15 verbose addNamed [ null, '*' ]
16 silly lockFile 627c61e5-time time@
17 verbose lock time@ C:\Users\Dustin\AppData\Roaming\npm-cache\627c61e5-time.lock
18 silly addNameRange { name: 'time', range: '*', hasData: false }
19 verbose url raw time
20 verbose url resolving [ 'https://registry.npmjs.org/', './time' ]
21 verbose url resolved https://registry.npmjs.org/time
22 info trying registry request attempt 1 at 21:58:46
23 verbose etag "C7VYX4NMXFZ5M9DD6TQWFWYW2"
24 http GET https://registry.npmjs.org/time
25 http 304 https://registry.npmjs.org/time
26 silly registry.get cb [ 304,
26 silly registry.get   { date: 'Fri, 23 May 2014 02:58:49 GMT',
26 silly registry.get     server: 'Apache',
26 silly registry.get     via: '1.1 varnish',
26 silly registry.get     'last-modified': 'Fri, 23 May 2014 02:58:49 GMT',
26 silly registry.get     'cache-control': 'max-age=1',
26 silly registry.get     etag: '"C7VYX4NMXFZ5M9DD6TQWFWYW2"',
26 silly registry.get     'x-served-by': 'cache-v41-ASH',
26 silly registry.get     'x-cache': 'HIT',
26 silly registry.get     'x-cache-hits': '1',
26 silly registry.get     'x-timer': 'S1400813929.226275,VS0,VE86',
26 silly registry.get     vary: 'Accept',
26 silly registry.get     'content-length': '0',
26 silly registry.get     'keep-alive': 'timeout=10, max=50',
26 silly registry.get     connection: 'Keep-Alive' } ]
27 verbose etag time from cache
28 silly addNameRange number 2 { name: 'time', range: '*', hasData: true }
29 silly addNameRange versions [ 'time',
29 silly addNameRange   [ '0.0.1',
29 silly addNameRange     '0.0.2',
29 silly addNameRange     '0.0.3',
29 silly addNameRange     '0.1.0',
29 silly addNameRange     '0.1.1',
29 silly addNameRange     '0.1.2',
29 silly addNameRange     '0.1.3',
29 silly addNameRange     '0.1.4',
29 silly addNameRange     '0.2.0',
29 silly addNameRange     '0.2.1',
29 silly addNameRange     '0.2.2',
29 silly addNameRange     '0.2.3',
29 silly addNameRange     '0.3.0',
29 silly addNameRange     '0.3.1',
29 silly addNameRange     '0.3.2',
29 silly addNameRange     '0.4.0',
29 silly addNameRange     '0.5.0',
29 silly addNameRange     '0.6.0',
29 silly addNameRange     '0.6.2',
29 silly addNameRange     '0.6.3',
29 silly addNameRange     '0.6.4',
29 silly addNameRange     '0.6.5',
29 silly addNameRange     '0.7.0',
29 silly addNameRange     '0.8.0',
29 silly addNameRange     '0.8.1',
29 silly addNameRange     '0.8.2',
29 silly addNameRange     '0.8.3',
29 silly addNameRange     '0.8.4',
29 silly addNameRange     '0.9.0',
29 silly addNameRange     '0.9.1',
29 silly addNameRange     '0.9.2',
29 silly addNameRange     '0.10.0' ] ]
30 verbose addNamed [ 'time', '0.10.0' ]
31 verbose addNamed [ '0.10.0', '0.10.0' ]
32 silly lockFile 9c669ee2-time-0-10-0 time@0.10.0
33 verbose lock time@0.10.0 C:\Users\Dustin\AppData\Roaming\npm-cache\9c669ee2-time-0-10-0.lock
34 silly lockFile 9c669ee2-time-0-10-0 time@0.10.0
35 silly lockFile 9c669ee2-time-0-10-0 time@0.10.0
36 silly lockFile 627c61e5-time time@
37 silly lockFile 627c61e5-time time@
38 silly resolved [ { name: 'time',
38 silly resolved     description: '"time.h" bindings for NodeJS',
38 silly resolved     keywords:
38 silly resolved      [ 'date',
38 silly resolved        'time',
38 silly resolved        'time.h',
38 silly resolved        'timezone',
38 silly resolved        'setTimezone',
38 silly resolved        'getTimezone' ],
38 silly resolved     version: '0.10.0',
38 silly resolved     repository:
38 silly resolved      { type: 'git',
38 silly resolved        url: 'git://github.com/TooTallNate/node-time.git' },
38 silly resolved     author:
38 silly resolved      { name: 'Nathan Rajlich',
38 silly resolved        email: 'nathan@tootallnate.net',
38 silly resolved        url: 'http://tootallnate.net' },
38 silly resolved     contributors: [ [Object] ],
38 silly resolved     main: './index.js',
38 silly resolved     scripts: { test: 'mocha --reporter spec', install: 'node-gyp rebuild' },
38 silly resolved     engines: { node: '*' },
38 silly resolved     dependencies: { bindings: '*', debug: '*', nan: '~0.4.4' },
38 silly resolved     devDependencies: { mocha: '*', should: '~0.6.3' },
38 silly resolved     gypfile: true,
38 silly resolved     readme: 'node-time\n=========\n### "[time.h][]" bindings for [NodeJS][Node].\n[![Build Status](https://secure.travis-ci.org/TooTallNate/node-time.png?branch=master)](http://travis-ci.org/TooTallNate/node-time)\n\n\nThis module offers simple bindings for the C [time.h][] APIs.\nIt also offers an extended native `Date` object with `getTimezone()`\nand `setTimezone()` functions, which aren\'t normally part of JavaScript.\n\n\nInstallation\n------------\n\n`node-time` is available through npm:\n\n``` bash\n$ npm install time\n```\n\n\nExample\n-------\n\n``` javascript\nvar time = require(\'time\');\n\n// Create a new Date instance, representing the current instant in time\nvar now = new time.Date();\n\nnow.setTimezone("America/Los_Angeles");\n// `.getDate()`, `.getDay()`, `.getHours()`, etc.\n// will return values according to UTC-8\n\nnow.setTimezone("America/New_York");\n// `.getDate()`, `.getDay()`, `.getHours()`, etc.\n// will return values according to UTC-5\n\n\n// You can also set the timezone during instantiation\nvar azDate = new time.Date(2010, 0, 1, \'America/Phoenix\');\nazDate.getTimezone(); // \'America/Phoenix\'\n```\n\n### Extending the global `Date` object\n\n`node-time` provides a convenient `time.Date` object, which is its own Date\nconstructor independent from your own (or the global) Date object. There are often\ntimes, however, when you would like the benefits of node-time on *all* Date\ninstances. To extend the global Date object, simply pass it in as an argument to\nthe node-time module when requiring:\n\n``` js\nvar time = require(\'time\')(Date);\n\nvar d = new Date();\nd.setTimezone(\'UTC\');\n```\n\n\nAPI\n---\n\n\n### Date() -> Date\n#### new time.Date()\n#### new time.Date(millisecondsFromUTC)\n#### new time.Date(dateString [, timezone ])\n#### new time.Date(year, month, day [, hour, minute, second, millisecond ] [, timezone ])\n\nA special `Date` constructor that returns a "super" Date instance, that has\nmagic _timezone_ capabilities! You can also pass a `timezone` as the last\nargument in order to have a Date instance in the specified timezone.\n\n``` javascript\nvar now = new time.Date();\nvar another = new time.Date(\'Aug 9, 1995\', \'UTC\');\nvar more = new time.Date(1970, 0, 1, \'Europe/Amsterdam\');\n```\n\n\n#### date.setTimezone(timezone [, relative ]) -> Undefined\n\nSets the timezone for the `Date` instance. By default this function makes it so\nthat calls to `getHours()`, `getDays()`, `getMinutes()`, etc. will be relative to\nthe timezone specified. If you pass `true` in as the second argument, then\ninstead of adjusting the local "get" functions to match the specified timezone,\ninstead the internal state of the Date instance is changed, such that the local\n"get" functions retain their values from before the setTimezone call.\n\n``` javascript\ndate.setTimezone("America/Argentina/San_Juan")\n\n// Default behavior:\na = new time.Date()\na.toString()\n// \'Wed Aug 31 2011 09:45:31 GMT-0700 (PDT)\'\na.setTimezone(\'UTC\')\na.toString()\n// \'Wed Aug 31 2011 16:45:31 GMT+0000 (UTC)\'\n\n// Relative behavior:\nb = new time.Date()\nb.toString()\n// \'Wed Aug 31 2011 10:48:03 GMT-0700 (PDT)\'\nb.setTimezone(\'UTC\', true)\nb.toString()\n// \'Wed Aug 31 2011 10:48:03 GMT+0000 (UTC)\'\n```\n\n\n#### date.getTimezone() -> String\n\nReturns a String containing the currently configured timezone for the date instance.\nThis must be called _after_ `setTimezone()` has been called.\n\n``` javascript\ndate.getTimezone();\n  // "America/Argentina/San_Juan"\n```\n\n\n#### date.getTimezoneAbbr() -> String\n\nReturns the abbreviated timezone name, also taking daylight savings into consideration.\nUseful for the presentation layer of a Date instance.\n\n``` javascript\ndate.getTimezoneAbbr();\n  // "ART"\n```\n\n\n### Date.parse(dateStr [, timezone ]) -> Number\n\nSame as the native JavaScript `Date.parse()` function, only this version allows\nfor a second, optional, `timezone` argument, which specifies the timezone in\nwhich the date string parsing will be resolved against. This function is also\naliased as `time.parse()`.\n\n``` javascript\ntime.Date.parse("1970, January 1");  // <- Local Time\n  // 28800000\ntime.Date.parse("1970, January 1", "Europe/Copenhagen");\n  // -3600000\ntime.Date.parse("1970, January 1", "UTC");\n  // 0\n```\n\n\n### extend(date) -> Date\n\nTransforms a "regular" Date instance into one of `node-time`\'s "extended" Date instances.\n\n``` javascript\nvar d = new Date();\n// `d.setTimezone()` does not exist...\ntime.extend(d);\nd.setTimezone("UTC");\n```\n\n\n### time() -> Number\n\nBinding for `time()`. Returns the number of seconds since Jan 1, 1900 UTC.\nThese two are equivalent:\n\n``` javascript\ntime.time();\n  // 1299827226\nMath.floor(Date.now() / 1000);\n  // 1299827226\n```\n\n\n### tzset(timezone) -> Object\n\nBinding for `tzset()`. Sets up the timezone information that `localtime()` will\nuse based on the specified _timezone_ variable, or the current `process.env.TZ`\nvalue if none is specified. Returns an Object containing information about the\nnewly set timezone, or throws an Error if no timezone information could be loaded\nfor the specified timezone.\n\n``` javascript\ntime.tzset(\'US/Pacific\');\n  // { tzname: [ \'PST\', \'PDT\' ],\n  //   timezone: 28800,\n  //   daylight: 1 }\n```\n\n\n### localtime(Number) -> Object\n\nBinding for `localtime()`. Accepts a Number with the number of seconds since the\nEpoch (i.e. the result of `time()`), and returns a "broken-down" Object\nrepresentation of the timestamp, according the the currently configured timezone\n(see `tzset()`).\n\n``` javascript\ntime.localtime(Date.now()/1000);\n  // { seconds: 38,\n  //   minutes: 7,\n  //   hours: 23,\n  //   dayOfMonth: 10,\n  //   month: 2,\n  //   year: 111,\n  //   dayOfWeek: 4,\n  //   dayOfYear: 68,\n  //   isDaylightSavings: false,\n  //   gmtOffset: -28800,\n  //   timezone: \'PST\' }\n```\n\n\n### currentTimezone -> String\n\nThe `currentTimezone` property always contains a String to the current timezone\nbeing used by `node-time`. This property is reset every time the `tzset()`\nfunction is called. Individual `time.Date` instances may have independent\ntimezone settings than what this one is...\n\n\n[Node]: http://nodejs.org\n[time.h]: http://en.wikipedia.org/wiki/Time.h\n',
38 silly resolved     readmeFilename: 'README.md',
38 silly resolved     bugs: { url: 'https://github.com/TooTallNate/node-time/issues' },
38 silly resolved     homepage: 'https://github.com/TooTallNate/node-time',
38 silly resolved     _id: 'time@0.10.0',
38 silly resolved     _shasum: '1de3567f852bf4085152b9e82133f756f4fb2053',
38 silly resolved     _from: 'time@',
38 silly resolved     _resolved: 'https://registry.npmjs.org/time/-/time-0.10.0.tgz' } ]
39 info install time@0.10.0 into D:\Dev\chatbot
40 info installOne time@0.10.0
41 info D:\Dev\chatbot\node_modules\time unbuild
42 verbose tar unpack C:\Users\Dustin\AppData\Roaming\npm-cache\time\0.10.0\package.tgz
43 silly lockFile bf915902--D-Dev-chatbot-node-modules-time tar://D:\Dev\chatbot\node_modules\time
44 verbose lock tar://D:\Dev\chatbot\node_modules\time C:\Users\Dustin\AppData\Roaming\npm-cache\bf915902--D-Dev-chatbot-node-modules-time.lock
45 silly lockFile bd90a0e7-pm-cache-time-0-10-0-package-tgz tar://C:\Users\Dustin\AppData\Roaming\npm-cache\time\0.10.0\package.tgz
46 verbose lock tar://C:\Users\Dustin\AppData\Roaming\npm-cache\time\0.10.0\package.tgz C:\Users\Dustin\AppData\Roaming\npm-cache\bd90a0e7-pm-cache-time-0-10-0-package-tgz.lock
47 silly gunzTarPerm modes [ '755', '644' ]
48 silly gunzTarPerm extractEntry package.json
49 silly gunzTarPerm extractEntry .npmignore
50 silly gunzTarPerm extractEntry README.md
51 silly gunzTarPerm extractEntry LICENSE
52 silly gunzTarPerm extractEntry index.js
53 silly gunzTarPerm extractEntry binding.gyp
54 silly gunzTarPerm extractEntry .jshintrc
55 silly gunzTarPerm extractEntry Makefile
56 silly gunzTarPerm extractEntry .travis.yml
57 silly gunzTarPerm extractEntry src/time.cc
58 silly gunzTarPerm extractEntry test/date.js
59 silly gunzTarPerm extractEntry test/exports.js
60 silly gunzTarPerm extractEntry test/tzset.js
61 silly gunzTarPerm extractEntry wscript
62 silly lockFile bf915902--D-Dev-chatbot-node-modules-time tar://D:\Dev\chatbot\node_modules\time
63 silly lockFile bf915902--D-Dev-chatbot-node-modules-time tar://D:\Dev\chatbot\node_modules\time
64 silly lockFile bd90a0e7-pm-cache-time-0-10-0-package-tgz tar://C:\Users\Dustin\AppData\Roaming\npm-cache\time\0.10.0\package.tgz
65 silly lockFile bd90a0e7-pm-cache-time-0-10-0-package-tgz tar://C:\Users\Dustin\AppData\Roaming\npm-cache\time\0.10.0\package.tgz
66 info preinstall time@0.10.0
67 verbose readDependencies using package.json deps
68 verbose readDependencies using package.json deps
69 verbose cache add [ 'bindings@*', null ]
70 verbose cache add name=undefined spec="bindings@*" args=["bindings@*",null]
71 verbose parsed url { protocol: null,
71 verbose parsed url   slashes: null,
71 verbose parsed url   auth: null,
71 verbose parsed url   host: null,
71 verbose parsed url   port: null,
71 verbose parsed url   hostname: null,
71 verbose parsed url   hash: null,
71 verbose parsed url   search: null,
71 verbose parsed url   query: null,
71 verbose parsed url   pathname: 'bindings@*',
71 verbose parsed url   path: 'bindings@*',
71 verbose parsed url   href: 'bindings@*' }
72 verbose cache add name="bindings" spec="*" args=["bindings","*"]
73 verbose parsed url { protocol: null,
73 verbose parsed url   slashes: null,
73 verbose parsed url   auth: null,
73 verbose parsed url   host: null,
73 verbose parsed url   port: null,
73 verbose parsed url   hostname: null,
73 verbose parsed url   hash: null,
73 verbose parsed url   search: null,
73 verbose parsed url   query: null,
73 verbose parsed url   pathname: '*',
73 verbose parsed url   path: '*',
73 verbose parsed url   href: '*' }
74 verbose addNamed [ 'bindings', '*' ]
75 verbose addNamed [ null, '*' ]
76 silly lockFile a3858fc2-bindings bindings@*
77 verbose lock bindings@* C:\Users\Dustin\AppData\Roaming\npm-cache\a3858fc2-bindings.lock
78 verbose cache add [ 'debug@*', null ]
79 verbose cache add name=undefined spec="debug@*" args=["debug@*",null]
80 verbose parsed url { protocol: null,
80 verbose parsed url   slashes: null,
80 verbose parsed url   auth: null,
80 verbose parsed url   host: null,
80 verbose parsed url   port: null,
80 verbose parsed url   hostname: null,
80 verbose parsed url   hash: null,
80 verbose parsed url   search: null,
80 verbose parsed url   query: null,
80 verbose parsed url   pathname: 'debug@*',
80 verbose parsed url   path: 'debug@*',
80 verbose parsed url   href: 'debug@*' }
81 verbose cache add name="debug" spec="*" args=["debug","*"]
82 verbose parsed url { protocol: null,
82 verbose parsed url   slashes: null,
82 verbose parsed url   auth: null,
82 verbose parsed url   host: null,
82 verbose parsed url   port: null,
82 verbose parsed url   hostname: null,
82 verbose parsed url   hash: null,
82 verbose parsed url   search: null,
82 verbose parsed url   query: null,
82 verbose parsed url   pathname: '*',
82 verbose parsed url   path: '*',
82 verbose parsed url   href: '*' }
83 verbose addNamed [ 'debug', '*' ]
84 verbose addNamed [ null, '*' ]
85 silly lockFile 3ac45eff-debug debug@*
86 verbose lock debug@* C:\Users\Dustin\AppData\Roaming\npm-cache\3ac45eff-debug.lock
87 verbose cache add [ 'nan@~0.4.4', null ]
88 verbose cache add name=undefined spec="nan@~0.4.4" args=["nan@~0.4.4",null]
89 verbose parsed url { protocol: null,
89 verbose parsed url   slashes: null,
89 verbose parsed url   auth: null,
89 verbose parsed url   host: null,
89 verbose parsed url   port: null,
89 verbose parsed url   hostname: null,
89 verbose parsed url   hash: null,
89 verbose parsed url   search: null,
89 verbose parsed url   query: null,
89 verbose parsed url   pathname: 'nan@~0.4.4',
89 verbose parsed url   path: 'nan@~0.4.4',
89 verbose parsed url   href: 'nan@~0.4.4' }
90 verbose cache add name="nan" spec="~0.4.4" args=["nan","~0.4.4"]
91 verbose parsed url { protocol: null,
91 verbose parsed url   slashes: null,
91 verbose parsed url   auth: null,
91 verbose parsed url   host: null,
91 verbose parsed url   port: null,
91 verbose parsed url   hostname: null,
91 verbose parsed url   hash: null,
91 verbose parsed url   search: null,
91 verbose parsed url   query: null,
91 verbose parsed url   pathname: '~0.4.4',
91 verbose parsed url   path: '~0.4.4',
91 verbose parsed url   href: '~0.4.4' }
92 verbose addNamed [ 'nan', '~0.4.4' ]
93 verbose addNamed [ null, '>=0.4.4-0 <0.5.0-0' ]
94 silly lockFile 212484be-nan-0-4-4 nan@~0.4.4
95 verbose lock nan@~0.4.4 C:\Users\Dustin\AppData\Roaming\npm-cache\212484be-nan-0-4-4.lock
96 silly addNameRange { name: 'debug', range: '*', hasData: false }
97 silly addNameRange { name: 'bindings', range: '*', hasData: false }
98 silly addNameRange { name: 'nan', range: '>=0.4.4-0 <0.5.0-0', hasData: false }
99 verbose url raw debug
100 verbose url resolving [ 'https://registry.npmjs.org/', './debug' ]
101 verbose url resolved https://registry.npmjs.org/debug
102 info trying registry request attempt 1 at 21:58:47
103 verbose etag "8KNK8WK4NAGYNSNFTS09MXUVG"
104 http GET https://registry.npmjs.org/debug
105 verbose url raw bindings
106 verbose url resolving [ 'https://registry.npmjs.org/', './bindings' ]
107 verbose url resolved https://registry.npmjs.org/bindings
108 info trying registry request attempt 1 at 21:58:47
109 verbose etag "EF0U3ERBDZ107WR2K8OB2X3WQ"
110 http GET https://registry.npmjs.org/bindings
111 verbose url raw nan
112 verbose url resolving [ 'https://registry.npmjs.org/', './nan' ]
113 verbose url resolved https://registry.npmjs.org/nan
114 info trying registry request attempt 1 at 21:58:47
115 verbose etag "AHXQ5MEXNAVAQ8W9Q2GUKPOL"
116 http GET https://registry.npmjs.org/nan
117 http 304 https://registry.npmjs.org/nan
118 silly registry.get cb [ 304,
118 silly registry.get   { date: 'Fri, 23 May 2014 02:58:49 GMT',
118 silly registry.get     server: 'Apache',
118 silly registry.get     via: '1.1 varnish',
118 silly registry.get     'last-modified': 'Fri, 23 May 2014 02:58:49 GMT',
118 silly registry.get     'cache-control': 'max-age=1',
118 silly registry.get     etag: '"AHXQ5MEXNAVAQ8W9Q2GUKPOL"',
118 silly registry.get     'x-served-by': 'cache-v37-ASH',
118 silly registry.get     'x-cache': 'HIT',
118 silly registry.get     'x-cache-hits': '1',
118 silly registry.get     'x-timer': 'S1400813929.838420,VS0,VE92',
118 silly registry.get     vary: 'Accept',
118 silly registry.get     'content-length': '0',
118 silly registry.get     'keep-alive': 'timeout=10, max=50',
118 silly registry.get     connection: 'Keep-Alive' } ]
119 verbose etag nan from cache
120 silly addNameRange number 2 { name: 'nan', range: '>=0.4.4-0 <0.5.0-0', hasData: true }
121 silly addNameRange versions [ 'nan',
121 silly addNameRange   [ '0.3.0-wip',
121 silly addNameRange     '0.3.0-wip2',
121 silly addNameRange     '0.3.0',
121 silly addNameRange     '0.3.1',
121 silly addNameRange     '0.3.2',
121 silly addNameRange     '0.4.0',
121 silly addNameRange     '0.4.1',
121 silly addNameRange     '0.4.2',
121 silly addNameRange     '0.4.3',
121 silly addNameRange     '0.4.4',
121 silly addNameRange     '0.5.0',
121 silly addNameRange     '0.5.1',
121 silly addNameRange     '0.5.2',
121 silly addNameRange     '0.6.0',
121 silly addNameRange     '0.7.0',
121 silly addNameRange     '0.7.1',
121 silly addNameRange     '0.8.0',
121 silly addNameRange     '1.0.0' ] ]
122 verbose addNamed [ 'nan', '0.4.4' ]
123 verbose addNamed [ '0.4.4', '0.4.4' ]
124 silly lockFile 795fb663-nan-0-4-4 nan@0.4.4
125 verbose lock nan@0.4.4 C:\Users\Dustin\AppData\Roaming\npm-cache\795fb663-nan-0-4-4.lock
126 silly lockFile 795fb663-nan-0-4-4 nan@0.4.4
127 silly lockFile 795fb663-nan-0-4-4 nan@0.4.4
128 silly lockFile 212484be-nan-0-4-4 nan@~0.4.4
129 silly lockFile 212484be-nan-0-4-4 nan@~0.4.4
130 http 304 https://registry.npmjs.org/debug
131 silly registry.get cb [ 304,
131 silly registry.get   { date: 'Fri, 23 May 2014 02:58:49 GMT',
131 silly registry.get     server: 'Apache',
131 silly registry.get     via: '1.1 varnish',
131 silly registry.get     'last-modified': 'Fri, 23 May 2014 02:58:49 GMT',
131 silly registry.get     'cache-control': 'max-age=1',
131 silly registry.get     etag: '"8KNK8WK4NAGYNSNFTS09MXUVG"',
131 silly registry.get     'x-served-by': 'cache-v36-ASH',
131 silly registry.get     'x-cache': 'HIT',
131 silly registry.get     'x-cache-hits': '1',
131 silly registry.get     'x-timer': 'S1400813929.838404,VS0,VE93',
131 silly registry.get     vary: 'Accept',
131 silly registry.get     'content-length': '0',
131 silly registry.get     'keep-alive': 'timeout=10, max=50',
131 silly registry.get     connection: 'Keep-Alive' } ]
132 verbose etag debug from cache
133 silly addNameRange number 2 { name: 'debug', range: '*', hasData: true }
134 silly addNameRange versions [ 'debug',
134 silly addNameRange   [ '0.0.1',
134 silly addNameRange     '0.1.0',
134 silly addNameRange     '0.2.0',
134 silly addNameRange     '0.3.0',
134 silly addNameRange     '0.4.0',
134 silly addNameRange     '0.4.1',
134 silly addNameRange     '0.5.0',
134 silly addNameRange     '0.6.0',
134 silly addNameRange     '0.7.0',
134 silly addNameRange     '0.7.1',
134 silly addNameRange     '0.7.2',
134 silly addNameRange     '0.7.3',
134 silly addNameRange     '0.7.4',
134 silly addNameRange     '0.8.0',
134 silly addNameRange     '0.8.1' ] ]
135 verbose addNamed [ 'debug', '0.8.1' ]
136 verbose addNamed [ '0.8.1', '0.8.1' ]
137 silly lockFile a38530e1-debug-0-8-1 debug@0.8.1
138 verbose lock debug@0.8.1 C:\Users\Dustin\AppData\Roaming\npm-cache\a38530e1-debug-0-8-1.lock
139 silly lockFile a38530e1-debug-0-8-1 debug@0.8.1
140 silly lockFile a38530e1-debug-0-8-1 debug@0.8.1
141 silly lockFile 3ac45eff-debug debug@*
142 silly lockFile 3ac45eff-debug debug@*
143 http 304 https://registry.npmjs.org/bindings
144 silly registry.get cb [ 304,
144 silly registry.get   { date: 'Fri, 23 May 2014 02:58:49 GMT',
144 silly registry.get     server: 'Apache',
144 silly registry.get     via: '1.1 varnish',
144 silly registry.get     'last-modified': 'Fri, 23 May 2014 02:58:49 GMT',
144 silly registry.get     'cache-control': 'max-age=1',
144 silly registry.get     etag: '"EF0U3ERBDZ107WR2K8OB2X3WQ"',
144 silly registry.get     'x-served-by': 'cache-v41-ASH',
144 silly registry.get     'x-cache': 'HIT',
144 silly registry.get     'x-cache-hits': '1',
144 silly registry.get     'x-timer': 'S1400813929.880622,VS0,VE94',
144 silly registry.get     vary: 'Accept',
144 silly registry.get     'content-length': '0',
144 silly registry.get     'keep-alive': 'timeout=10, max=50',
144 silly registry.get     connection: 'Keep-Alive' } ]
145 verbose etag bindings from cache
146 silly addNameRange number 2 { name: 'bindings', range: '*', hasData: true }
147 silly addNameRange versions [ 'bindings',
147 silly addNameRange   [ '0.0.1',
147 silly addNameRange     '0.1.0',
147 silly addNameRange     '0.1.1',
147 silly addNameRange     '0.2.0',
147 silly addNameRange     '0.2.1',
147 silly addNameRange     '0.2.2',
147 silly addNameRange     '0.2.3',
147 silly addNameRange     '0.2.4',
147 silly addNameRange     '0.3.0',
147 silly addNameRange     '0.4.0',
147 silly addNameRange     '1.0.0',
147 silly addNameRange     '1.1.0',
147 silly addNameRange     '1.1.1',
147 silly addNameRange     '1.2.0' ] ]
148 verbose addNamed [ 'bindings', '1.2.0' ]
149 verbose addNamed [ '1.2.0', '1.2.0' ]
150 silly lockFile edb95d60-bindings-1-2-0 bindings@1.2.0
151 verbose lock bindings@1.2.0 C:\Users\Dustin\AppData\Roaming\npm-cache\edb95d60-bindings-1-2-0.lock
152 silly lockFile edb95d60-bindings-1-2-0 bindings@1.2.0
153 silly lockFile edb95d60-bindings-1-2-0 bindings@1.2.0
154 silly lockFile a3858fc2-bindings bindings@*
155 silly lockFile a3858fc2-bindings bindings@*
156 silly resolved [ { name: 'nan',
156 silly resolved     version: '0.4.4',
156 silly resolved     description: 'Native Abstractions for Node.js: C++ header for Node 0.8->0.12 compatibility',
156 silly resolved     main: '.index.js',
156 silly resolved     repository: { type: 'git', url: 'git://github.com/rvagg/nan.git' },
156 silly resolved     contributors: [ [Object], [Object], [Object] ],
156 silly resolved     license: 'MIT',
156 silly resolved     readme: 'Native Abstractions for Node.js\n===============================\n\n**A header file filled with macro and utility goodness for making add-on development for Node.js easier across versions 0.8, 0.10 and 0.11, and eventually 0.12.**\n\n***Current version: 0.4.4*** *(See [nan.h](https://github.com/rvagg/nan/blob/master/nan.h) for complete ChangeLog)*\n\n[![NPM](https://nodei.co/npm/nan.png?downloads=true&stars=true)](https://nodei.co/npm/nan/) [![NPM](https://nodei.co/npm-dl/nan.png?months=6)](https://nodei.co/npm/nan/)\n\nThanks to the crazy changes in V8 (and some in Node core), keeping native addons compiling happily across versions, particularly 0.10 to 0.11/0.12, is a minor nightmare. The goal of this project is to store all logic necessary to develop native Node.js addons without having to inspect `NODE_MODULE_VERSION` and get yourself into a macro-tangle.\n\nThis project also contains some helper utilities that make addon development a bit more pleasant.\n\n * **[Usage](#usage)**\n * **[Example](#example)**\n * **[API](#api)**\n\n<a name="usage"></a>\n## Usage\n\nSimply add **NAN** as a dependency in the *package.json* of your Node addon:\n\n```js\n"dependencies": {\n    ...\n    "nan" : "~0.4.4"\n    ...\n}\n```\n\nPull in the path to **NAN** in your *binding.gyp* so that you can use `#include "nan.h"` in your *.cpp*:\n\n```js\n"include_dirs" : [\n    "<!(node -p -e \\"require(\'path\').relative(\'.\', require(\'path\').dirname(require.resolve(\'nan\')))\\")"\n]\n```\n\nThis works like a `-I<path-to-NAN>` when compiling your addon.\n\n<a name="example"></a>\n## Example\n\nSee **[LevelDOWN](https://github.com/rvagg/node-leveldown/pull/48)** for a full example of **NAN** in use.\n\nFor a simpler example, see the **[async pi estimation example](https://github.com/rvagg/nan/tree/master/examples/async_pi_estimate)** in the examples directory for full code and an explanation of what this Monte Carlo Pi estimation example does. Below are just some parts of the full example that illustrate the use of **NAN**.\n\nCompare to the current 0.10 version of this example, found in the [node-addon-examples](https://github.com/rvagg/node-addon-examples/tree/master/9_async_work) repository and also a 0.11 version of the same found [here](https://github.com/kkoopa/node-addon-examples/tree/5c01f58fc993377a567812597e54a83af69686d7/9_async_work).\n\nNote that there is no embedded version sniffing going on here and also the async work is made much simpler, see below for details on the `NanAsyncWorker` class.\n\n```c++\n// addon.cc\n#include <node.h>\n#include "nan.h"\n// ...\n\nusing namespace v8;\n\nvoid InitAll(Handle<Object> exports) {\n  exports->Set(NanSymbol("calculateSync"),\n    FunctionTemplate::New(CalculateSync)->GetFunction());\n\n  exports->Set(NanSymbol("calculateAsync"),\n    FunctionTemplate::New(CalculateAsync)->GetFunction());\n}\n\nNODE_MODULE(addon, InitAll)\n```\n\n```c++\n// sync.h\n#include <node.h>\n#include "nan.h"\n\nNAN_METHOD(CalculateSync);\n```\n\n```c++\n// sync.cc\n#include <node.h>\n#include "nan.h"\n#include "sync.h"\n// ...\n\nusing namespace v8;\n\n// Simple synchronous access to the `Estimate()` function\nNAN_METHOD(CalculateSync) {\n  NanScope();\n\n  // expect a number as the first argument\n  int points = args[0]->Uint32Value();\n  double est = Estimate(points);\n\n  NanReturnValue(Number::New(est));\n}\n```\n\n```c++\n// async.cc\n#include <node.h>\n#include "nan.h"\n#include "async.h"\n\n// ...\n\nusing namespace v8;\n\nclass PiWorker : public NanAsyncWorker {\n public:\n  PiWorker(NanCallback *callback, int points)\n    : NanAsyncWorker(callback), points(points) {}\n  ~PiWorker() {}\n\n  // Executed inside the worker-thread.\n  // It is not safe to access V8, or V8 data structures\n  // here, so everything we need for input and output\n  // should go on `this`.\n  void Execute () {\n    estimate = Estimate(points);\n  }\n\n  // Executed when the async work is complete\n  // this function will be run inside the main event loop\n  // so it is safe to use V8 again\n  void HandleOKCallback () {\n    NanScope();\n\n    Local<Value> argv[] = {\n        Local<Value>::New(Null())\n      , Number::New(estimate)\n    };\n\n    callback->Call(2, argv);\n  };\n\n private:\n  int points;\n  double estimate;\n};\n\n// Asynchronous access to the `Estimate()` function\nNAN_METHOD(CalculateAsync) {\n  NanScope();\n\n  int points = args[0]->Uint32Value();\n  NanCallback *callback = new NanCallback(args[1].As<Function>());\n\n  NanAsyncQueueWorker(new PiWorker(callback, points));\n  NanReturnUndefined();\n}\n```\n\n<a name="api"></a>\n## API\n\n * <a href="#api_nan_method"><b><code>NAN_METHOD</code></b></a>\n * <a href="#api_nan_getter"><b><code>NAN_GETTER</code></b></a>\n * <a href="#api_nan_setter"><b><code>NAN_SETTER</code></b></a>\n * <a href="#api_nan_property_getter"><b><code>NAN_PROPERTY_GETTER</code></b></a>\n * <a href="#api_nan_property_setter"><b><code>NAN_PROPERTY_SETTER</code></b></a>\n * <a href="#api_nan_property_enumerator"><b><code>NAN_PROPERTY_ENUMERATOR</code></b></a>\n * <a href="#api_nan_property_deleter"><b><code>NAN_PROPERTY_DELETER</code></b></a>\n * <a href="#api_nan_property_query"><b><code>NAN_PROPERTY_QUERY</code></b></a>\n * <a href="#api_nan_weak_callback"><b><code>NAN_WEAK_CALLBACK</code></b></a>\n * <a href="#api_nan_deprecated"><b><code>NAN_DEPRECATED</code></b></a>\n * <a href="#api_nan_inline"><b><code>NAN_INLINE</code></b></a> \n * <a href="#api_nan_return_value"><b><code>NanReturnValue</code></b></a>\n * <a href="#api_nan_return_undefined"><b><code>NanReturnUndefined</code></b></a>\n * <a href="#api_nan_return_null"><b><code>NanReturnNull</code></b></a>\n * <a href="#api_nan_return_empty_string"><b><code>NanReturnEmptyString</code></b></a>\n * <a href="#api_nan_scope"><b><code>NanScope</code></b></a>\n * <a href="#api_nan_locker"><b><code>NanLocker</code></b></a>\n * <a href="#api_nan_unlocker"><b><code>NanUnlocker</code></b></a>\n * <a href="#api_nan_get_internal_field_pointer"><b><code>NanGetInternalFieldPointer</code></b></a>\n * <a href="#api_nan_set_internal_field_pointer"><b><code>NanSetInternalFieldPointer</code></b></a>\n * <a href="#api_nan_object_wrap_handle"><b><code>NanObjectWrapHandle</code></b></a>\n * <a href="#api_nan_make_weak"><b><code>NanMakeWeak</code></b></a>\n * <a href="#api_nan_symbol"><b><code>NanSymbol</code></b></a>\n * <a href="#api_nan_get_pointer_safe"><b><code>NanGetPointerSafe</code></b></a>\n * <a href="#api_nan_set_pointer_safe"><b><code>NanSetPointerSafe</code></b></a>\n * <a href="#api_nan_from_v8_string"><b><code>NanFromV8String</code></b></a>\n * <a href="#api_nan_boolean_option_value"><b><code>NanBooleanOptionValue</code></b></a>\n * <a href="#api_nan_uint32_option_value"><b><code>NanUInt32OptionValue</code></b></a>\n * <a href="#api_nan_error"><b><code>NanError</code></b>, <b><code>NanTypeError</code></b>, <b><code>NanRangeError</code></b></a>\n * <a href="#api_nan_throw_error"><b><code>NanThrowError</code></b>, <b><code>NanThrowTypeError</code></b>, <b><code>NanThrowRangeError</code></b>, <b><code>NanThrowError(Handle<Value>)</code></b>, <b><code>NanThrowError(Handle<Value>, int)</code></b></a>\n * <a href="#api_nan_new_buffer_handle"><b><code>NanNewBufferHandle(char *, size_t, FreeCallback, void *)</code></b>, <b><code>NanNewBufferHandle(char *, uint32_t)</code></b>, <b><code>NanNewBufferHandle(uint32_t)</code></b></a>\n * <a href="#api_nan_buffer_use"><b><code>NanBufferUse(char *, uint32_t)</code></b></a>\n * <a href="#api_nan_new_context_handle"><b><code>NanNewContextHandle</code></b></a>\n * <a href="#api_nan_has_instance"><b><code>NanHasInstance</code></b></a>\n * <a href="#api_nan_persistent_to_local"><b><code>NanPersistentToLocal</code></b></a>\n * <a href="#api_nan_dispose"><b><code>NanDispose</code></b></a>\n * <a href="#api_nan_assign_persistent"><b><code>NanAssignPersistent</code></b></a>\n * <a href="#api_nan_init_persistent"><b><code>NanInitPersistent</code></b></a>\n * <a href="#api_nan_callback"><b><code>NanCallback</code></b></a>\n * <a href="#api_nan_async_worker"><b><code>NanAsyncWorker</code></b></a>\n * <a href="#api_nan_async_queue_worker"><b><code>NanAsyncQueueWorker</code></b></a>\n\n<a name="api_nan_method"></a>\n### NAN_METHOD(methodname)\n\nUse `NAN_METHOD` to define your V8 accessible methods:\n\n```c++\n// .h:\nclass Foo : public node::ObjectWrap {\n  ...\n\n  static NAN_METHOD(Bar);\n  static NAN_METHOD(Baz);\n}\n\n\n// .cc:\nNAN_METHOD(Foo::Bar) {\n  ...\n}\n\nNAN_METHOD(Foo::Baz) {\n  ...\n}\n```\n\nThe reason for this macro is because of the method signature change in 0.11:\n\n```c++\n// 0.10 and below:\nHandle<Value> name(const Arguments& args)\n\n// 0.11 and above\nvoid name(const FunctionCallbackInfo<Value>& args)\n```\n\nThe introduction of `FunctionCallbackInfo` brings additional complications:\n\n<a name="api_nan_getter"></a>\n### NAN_GETTER(methodname)\n\nUse `NAN_GETTER` to declare your V8 accessible getters. You get a `Local<String>` `property` and an appropriately typed `args` object that can act like the `args` argument to a `NAN_METHOD` call.\n\nYou can use `NanReturnNull()`, `NanReturnEmptyString()`, `NanReturnUndefined()` and `NanReturnValue()` in a `NAN_GETTER`.\n\n<a name="api_nan_setter"></a>\n### NAN_SETTER(methodname)\n\nUse `NAN_SETTER` to declare your V8 accessible setters. Same as `NAN_GETTER` but you also get a `Local<Value>` `value` object to work with.\n\nYou can use `NanReturnNull()`, `NanReturnEmptyString()`, `NanReturnUndefined()` and `NanReturnValue()` in a `NAN_SETTER`.\n\n<a name="api_nan_property_getter"></a>\n### NAN_PROPERTY_GETTER(cbname)\nUse `NAN_PROPERTY_GETTER` to declare your V8 accessible property getters. You get a `Local<String>` `property` and an appropriately typed `args` object that can act similar to the `args` argument to a `NAN_METHOD` call.\n\nYou can use `NanReturnNull()`, `NanReturnEmptyString()`, `NanReturnUndefined()` and `NanReturnValue()` in a `NAN_PROPERTY_GETTER`.\n\n<a name="api_nan_property_setter"></a>\n### NAN_PROPERTY_SETTER(cbname)\nUse `NAN_PROPERTY_SETTER` to declare your V8 accessible property setters. Same as `NAN_PROPERTY_GETTER` but you also get a `Local<Value>` `value` object to work with.\n\nYou can use `NanReturnNull()`, `NanReturnEmptyString()`, `NanReturnUndefined()` and `NanReturnValue()` in a `NAN_PROPERTY_SETTER`.\n\n<a name="api_nan_property_enumerator"></a>\n### NAN_PROPERTY_ENUMERATOR(cbname)\nUse `NAN_PROPERTY_ENUMERATOR` to declare your V8 accessible property enumerators. You get an appropriately typed `args` object like the `args` argument to a `NAN_PROPERTY_GETTER` call.\n\nYou can use `NanReturnNull()`, `NanReturnEmptyString()`, `NanReturnUndefined()` and `NanReturnValue()` in a `NAN_PROPERTY_ENUMERATOR`.\n\n<a name="api_nan_property_deleter"></a>\n### NAN_PROPERTY_DELETER(cbname)\nUse `NAN_PROPERTY_DELETER` to declare your V8 accessible property deleters. Same as `NAN_PROPERTY_GETTER`.\n\nYou can use `NanReturnNull()`, `NanReturnEmptyString()`, `NanReturnUndefined()` and `NanReturnValue()` in a `NAN_PROPERTY_DELETER`.\n\n<a name="api_nan_property_query"></a>\n### NAN_PROPERTY_QUERY(cbname)\nUse `NAN_PROPERTY_QUERY` to declare your V8 accessible property queries. Same as `NAN_PROPERTY_GETTER`.\n\nYou can use `NanReturnNull()`, `NanReturnEmptyString()`, `NanReturnUndefined()` and `NanReturnValue()` in a `NAN_PROPERTY_QUERY`.\n\n<a name="api_nan_weak_callback"></a>\n### NAN_WEAK_CALLBACK(type, cbname)\n\nUse `NAN_WEAK_CALLBACK` to declare your V8 WeakReference callbacks. There is an object argument accessible through `NAN_WEAK_CALLBACK_OBJECT`. The `type` argument gives the type of the `data` argument, accessible through `NAN_WEAK_CALLBACK_DATA(type)`.\n\n```c++\nstatic NAN_WEAK_CALLBACK(BufferReference*, WeakCheck) {\n  if (NAN_WEAK_CALLBACK_DATA(BufferReference*)->noLongerNeeded_) {\n    delete NAN_WEAK_CALLBACK_DATA(BufferReference*);\n  } else {\n    // Still in use, revive, prevent GC\n    NanMakeWeak(NAN_WEAK_CALLBACK_OBJECT, NAN_WEAK_CALLBACK_DATA(BufferReference*), &WeakCheck);\n  }\n}\n```\n\n<a name="api_nan_deprecated"></a>\n### NAN_DEPRECATED(declarator)\nDeclares a function as deprecated. Identical to `V8_DEPRECATED`.\n\n```c++\nstatic NAN_DEPRECATED(NAN_METHOD(foo)) {\n  ...\n}\n```\n\n<a name="api_nan_inline"></a>\n### NAN_INLINE(declarator)\nInlines a function. Identical to `V8_INLINE`.\n\n```c++\nstatic NAN_INLINE(int foo(int bar)) {\n  ...\n}\n```\n\n<a name="api_nan_return_value"></a>\n### NanReturnValue(Handle&lt;Value&gt;)\n\nUse `NanReturnValue` when you want to return a value from your V8 accessible method:\n\n```c++\nNAN_METHOD(Foo::Bar) {\n  ...\n\n  NanReturnValue(String::New("FooBar!"));\n}\n```\n\nNo `return` statement required.\n\n<a name="api_nan_return_undefined"></a>\n### NanReturnUndefined()\n\nUse `NanReturnUndefined` when you don\'t want to return anything from your V8 accessible method:\n\n```c++\nNAN_METHOD(Foo::Baz) {\n  ...\n\n  NanReturnUndefined();\n}\n```\n\n<a name="api_nan_return_null"></a>\n### NanReturnNull()\n\nUse `NanReturnNull` when you want to return `Null` from your V8 accessible method:\n\n```c++\nNAN_METHOD(Foo::Baz) {\n  ...\n\n  NanReturnNull();\n}\n```\n\n<a name="api_nan_return_empty_string"></a>\n### NanReturnEmptyString()\n\nUse `NanReturnEmptyString` when you want to return an empty `String` from your V8 accessible method:\n\n```c++\nNAN_METHOD(Foo::Baz) {\n  ...\n\n  NanReturnEmptyString();\n}\n```\n\n<a name="api_nan_scope"></a>\n### NanScope()\n\nThe introduction of `isolate` references for many V8 calls in Node 0.11 makes `NanScope()` necessary, use it in place of `HandleScope scope`:\n\n```c++\nNAN_METHOD(Foo::Bar) {\n  NanScope();\n\n  NanReturnValue(String::New("FooBar!"));\n}\n```\n\n<a name="api_nan_locker"></a>\n### NanLocker()\n\nThe introduction of `isolate` references for many V8 calls in Node 0.11 makes `NanLocker()` necessary, use it in place of `Locker locker`:\n\n```c++\nNAN_METHOD(Foo::Bar) {\n  NanLocker();\n  ...\n  NanUnlocker();\n}\n```\n\n<a name="api_nan_unlocker"></a>\n### NanUnlocker()\n\nThe introduction of `isolate` references for many V8 calls in Node 0.11 makes `NanUnlocker()` necessary, use it in place of `Unlocker unlocker`:\n\n```c++\nNAN_METHOD(Foo::Bar) {\n  NanLocker();\n  ...\n  NanUnlocker();\n}\n```\n\n<a name="api_nan_get_internal_field_pointer"></a>\n### void * NanGetInternalFieldPointer(Handle&lt;Object&gt;, int)\n\nGets a pointer to the internal field with at `index` from a V8 `Object` handle.\n\n```c++\nLocal<Object> obj;\n...\nNanGetInternalFieldPointer(obj, 0);\n```\n<a name="api_nan_set_internal_field_pointer"></a>\n### void NanSetInternalFieldPointer(Handle&lt;Object&gt;, int, void *)\n\nSets the value of the internal field at `index` on a V8 `Object` handle.\n\n```c++\nstatic Persistent<Function> dataWrapperCtor;\n...\nLocal<Object> wrapper = NanPersistentToLocal(dataWrapperCtor)->NewInstance();\nNanSetInternalFieldPointer(wrapper, 0, this);\n```\n\n<a name="api_nan_object_wrap_handle"></a>\n### Local&lt;Object&gt; NanObjectWrapHandle(Object)\n\nWhen you want to fetch the V8 object handle from a native object you\'ve wrapped with Node\'s `ObjectWrap`, you should use `NanObjectWrapHandle`:\n\n```c++\nNanObjectWrapHandle(iterator)->Get(String::NewSymbol("end"))\n```\n\n<a name="api_nan_make_weak"></a>\n### NanMakeWeak(Persistent&lt;T&gt;, parameter, callback)\n\nMake a persistent reference weak.\n\n<a name="api_nan_symbol"></a>\n### String NanSymbol(char *)\n\nThis isn\'t strictly about compatibility, it\'s just an easier way to create string symbol objects (i.e. `String::NewSymbol(x)`), for getting and setting object properties, or names of objects.\n\n```c++\nbool foo = false;\nif (obj->Has(NanSymbol("foo")))\n  foo = optionsObj->Get(NanSymbol("foo"))->BooleanValue()\n```\n\n<a name="api_nan_get_pointer_safe"></a>\n### Type NanGetPointerSafe(Type *[, Type])\n\nA helper for getting values from optional pointers. If the pointer is `NULL`, the function returns the optional default value, which defaults to `0`.  Otherwise, the function returns the value the pointer points to.\n\n```c++\nchar *plugh(uint32_t *optional) {\n  char res[] = "xyzzy";\n  uint32_t param = NanGetPointerSafe<uint32_t>(optional, 0x1337);\n  switch (param) {\n    ...\n  }\n  NanSetPointerSafe<uint32_t>(optional, 0xDEADBEEF);\n}  \n```\n\n<a name="api_nan_set_pointer_safe"></a>\n### bool NanSetPointerSafe(Type *, Type)\n\nA helper for setting optional argument pointers. If the pointer is `NULL`, the function simply return `false`.  Otherwise, the value is assigned to the variable the pointer points to.\n\n```c++\nconst char *plugh(size_t *outputsize) {\n  char res[] = "xyzzy";\n  if !(NanSetPointerSafe<size_t>(outputsize, strlen(res) + 1)) {\n    ...\n  }\n\n  ...\n}\n```\n\n<a name="api_nan_from_v8_string"></a>\n### char* NanFromV8String(Handle&lt;Value&gt;[, enum Nan::Encoding, size_t *, char *, size_t, int])\n\nWhen you want to convert a V8 `String` to a `char*` use `NanFromV8String`. It is possible to define an encoding that defaults to `Nan::UTF8` as well as a pointer to a variable that will be assigned the number of bytes in the returned string. It is also possible to supply a buffer and its length to the function in order not to have a new buffer allocated. The final argument allows optionally setting `String::WriteOptions`, which default to `String::HINT_MANY_WRITES_EXPECTED | String::NO_NULL_TERMINATION`.\nJust remember that you\'ll end up with an object that you\'ll need to `delete[]` at some point unless you supply your own buffer:\n\n```c++\nsize_t count;\nchar* name = NanFromV8String(args[0]);\nchar* decoded = NanFromV8String(args[1], Nan::BASE64, &count, NULL, 0, String::HINT_MANY_WRITES_EXPECTED);\nchar param_copy[count];\nmemcpy(param_copy, decoded, count);\ndelete[] decoded;\n```\n\n<a name="api_nan_boolean_option_value"></a>\n### bool NanBooleanOptionValue(Handle&lt;Value&gt;, Handle&lt;String&gt;[, bool])\n\nWhen you have an "options" object that you need to fetch properties from, boolean options can be fetched with this pair. They check first if the object exists (`IsEmpty`), then if the object has the given property (`Has`) then they get and convert/coerce the property to a `bool`.\n\nThe optional last parameter is the *default* value, which is `false` if left off:\n\n```c++\n// `foo` is false unless the user supplies a truthy value for it\nbool foo = NanBooleanOptionValue(optionsObj, NanSymbol("foo"));\n// `bar` is true unless the user supplies a falsy value for it\nbool bar = NanBooleanOptionValueDefTrue(optionsObj, NanSymbol("bar"), true);\n```\n\n<a name="api_nan_uint32_option_value"></a>\n### uint32_t NanUInt32OptionValue(Handle&lt;Value&gt;, Handle&lt;String&gt;, uint32_t)\n\nSimilar to `NanBooleanOptionValue`, use `NanUInt32OptionValue` to fetch an integer option from your options object. Can be any kind of JavaScript `Number` and it will be coerced to an unsigned 32-bit integer.\n\nRequires all 3 arguments as a default is not optional:\n\n```c++\nuint32_t count = NanUInt32OptionValue(optionsObj, NanSymbol("count"), 1024);\n```\n\n<a name="api_nan_error"></a>\n### NanError(message), NanTypeError(message), NanRangeError(message)\n\nFor making `Error`, `TypeError` and `RangeError` objects.\n\n```c++\nLocal<Value> res = NanError("you must supply a callback argument");\n```\n\n<a name="api_nan_throw_error"></a>\n### NanThrowError(message), NanThrowTypeError(message), NanThrowRangeError(message), NanThrowError(Local&lt;Value&gt;), NanThrowError(Local&lt;Value&gt;, int)\n\nFor throwing `Error`, `TypeError` and `RangeError` objects. You should `return` this call:\n\n```c++\nreturn NanThrowError("you must supply a callback argument");\n```\n\nCan also handle any custom object you may want to throw. If used with the error code argument, it will add the supplied error code to the error object as a property called `code`.\n\n<a name="api_nan_new_buffer_handle"></a>\n### Local&lt;Object&gt; NanNewBufferHandle(char *, uint32_t), Local&lt;Object&gt; NanNewBufferHandle(uint32_t)\n\nThe `Buffer` API has changed a little in Node 0.11, this helper provides consistent access to `Buffer` creation:\n\n```c++\nNanNewBufferHandle((char*)value.data(), value.size());\n```\n\nCan also be used to initialize a `Buffer` with just a `size` argument.\n\nCan also be supplied with a `NAN_WEAK_CALLBACK` and a hint for the garbage collector, when dealing with weak references.\n\n<a name="api_nan_buffer_use"></a>\n### Local&lt;Object&gt; NanBufferUse(char*, uint32_t)\n\n`Buffer::New(char*, uint32_t)` prior to 0.11 would make a copy of the data.\nWhile it was possible to get around this, it required a shim by passing a\ncallback. So the new API `Buffer::Use(char*, uint32_t)` was introduced to remove\nneeding to use this shim.\n\n`NanBufferUse` uses the `char*` passed as the backing data, and will free the\nmemory automatically when the weak callback is called. Keep this in mind, as\ncareless use can lead to "double free or corruption" and other cryptic failures.\n\n<a name="api_nan_has_instance"></a>\n### bool NanHasInstance(Persistent&lt;FunctionTemplate&gt;&, Handle&lt;Value&gt;)\n\nCan be used to check the type of an object to determine it is of a particular class you have already defined and have a `Persistent<FunctionTemplate>` handle for.\n\n<a name="api_nan_persistent_to_local"></a>\n### Local&lt;Type&gt; NanPersistentToLocal(Persistent&lt;Type&gt;&)\n\nAside from `FunctionCallbackInfo`, the biggest and most painful change to V8 in Node 0.11 is the many restrictions now placed on `Persistent` handles. They are difficult to assign and difficult to fetch the original value out of.\n\nUse `NanPersistentToLocal` to convert a `Persistent` handle back to a `Local` handle.\n\n```c++\nLocal<Object> handle = NanPersistentToLocal(persistentHandle);\n```\n\n<a href="#api_nan_new_context_handle">\n### Local&lt;Context&gt; NanNewContextHandle([ExtensionConfiguration*, Handle&lt;ObjectTemplate&gt;, Handle&lt;Value&gt;])\nCreates a new `Local<Context>` handle.\n\n```c++\nLocal<FunctionTemplate> ftmpl = FunctionTemplate::New();\nLocal<ObjectTemplate> otmpl = ftmpl->InstanceTemplate();\nLocal<Context> ctx =  NanNewContextHandle(NULL, otmpl);\n```\n\n<a name="api_nan_dispose"></a>\n### void NanDispose(Persistent&lt;T&gt; &)\n\nUse `NanDispose` to dispose a `Persistent` handle.\n\n```c++\nNanDispose(persistentHandle);\n```\n\n<a name="api_nan_assign_persistent"></a>\n### NanAssignPersistent(type, handle, object)\n\nUse `NanAssignPersistent` to assign a non-`Persistent` handle to a `Persistent` one. You can no longer just declare a `Persistent` handle and assign directly to it later, you have to `Reset` it in Node 0.11, so this makes it easier.\n\nIn general it is now better to place anything you want to protect from V8\'s garbage collector as properties of a generic `Object` and then assign that to a `Persistent`. This works in older versions of Node also if you use `NanAssignPersistent`:\n\n```c++\nPersistent<Object> persistentHandle;\n\n...\n\nLocal<Object> obj = Object::New();\nobj->Set(NanSymbol("key"), keyHandle); // where keyHandle might be a Local<String>\nNanAssignPersistent(Object, persistentHandle, obj)\n```\n\n<a name="api_nan_init_persistent"></a>\n### NanInitPersistent(type, name, object)\n\nUser `NanInitPersistent` to declare and initialize a new `Persistent` with the supplied object. The assignment operator for `Persistent` is no longer public in Node 0.11, so this macro makes it easier to declare and initializing a new `Persistent`. See <a href="#api_nan_assign_persistent"><b><code>NanAssignPersistent</code></b></a> for more information.\n\n```c++\nLocal<Object> obj = Object::New();\nobj->Set(NanSymbol("key"), keyHandle); // where keyHandle might be a Local<String>\nNanInitPersistent(Object, persistentHandle, obj);\n```\n\n<a name="api_nan_callback"></a>\n### NanCallback\n\nBecause of the difficulties imposed by the changes to `Persistent` handles in V8 in Node 0.11, creating `Persistent` versions of your `Local<Function>` handles is annoyingly tricky. `NanCallback` makes it easier by taking your `Local` handle, making it persistent until the `NanCallback` is deleted and even providing a handy `Call()` method to fetch and execute the callback `Function`.\n\n```c++\nLocal<Function> callbackHandle = callback = args[0].As<Function>();\nNanCallback *callback = new NanCallback(callbackHandle);\n// pass `callback` around and it\'s safe from GC until you:\ndelete callback;\n```\n\nYou can execute the callback like so:\n\n```c++\n// no arguments:\ncallback->Call(0, NULL);\n\n// an error argument:\nLocal<Value> argv[] = {\n  Exception::Error(String::New("fail!"))\n};\ncallback->Call(1, argv);\n\n// a success argument:\nLocal<Value> argv[] = {\n  Local<Value>::New(Null()),\n  String::New("w00t!")\n};\ncallback->Call(2, argv);\n```\n\n`NanCallback` also has a `Local<Function> GetCallback()` method that you can use to fetch a local handle to the underlying callback function if you need it.\n\n<a name="api_nan_async_worker"></a>\n### NanAsyncWorker\n\n`NanAsyncWorker` is an abstract class that you can subclass to have much of the annoying async queuing and handling taken care of for you. It can even store arbitrary V8 objects for you and have them persist while the async work is in progress.\n\nSee a rough outline of the implementation:\n\n```c++\nclass NanAsyncWorker {\npublic:\n  NanAsyncWorker (NanCallback *callback);\n\n  // Clean up persistent handles and delete the *callback\n  virtual ~NanAsyncWorker ();\n\n  // Check the `char *errmsg` property and call HandleOKCallback()\n  // or HandleErrorCallback depending on whether it has been set or not\n  virtual void WorkComplete ();\n\n  // You must implement this to do some async work. If there is an\n  // error then allocate `errmsg` to to a message and the callback will\n  // be passed that string in an Error object\n  virtual void Execute ();\n\nprotected:\n  // Set this if there is an error, otherwise it\'s NULL\n  const char *errmsg;\n\n  // Save a V8 object in a Persistent handle to protect it from GC\n  void SavePersistent(const char *key, Local<Object> &obj);\n\n  // Fetch a stored V8 object (don\'t call from within `Execute()`)\n  Local<Object> GetFromPersistent(const char *key);\n\n  // Default implementation calls the callback function with no arguments.\n  // Override this to return meaningful data\n  virtual void HandleOKCallback ();\n\n  // Default implementation calls the callback function with an Error object\n  // wrapping the `errmsg` string\n  virtual void HandleErrorCallback ();\n};\n```\n\n<a name="api_nan_async_queue_worker"></a>\n### NanAsyncQueueWorker(NanAsyncWorker *)\n\n`NanAsyncQueueWorker` will run a `NanAsyncWorker` asynchronously via libuv. Both the *execute* and *after_work* steps are taken care of for you&mdash;most of the logic for this is embedded in `NanAsyncWorker`.\n\n### Contributors\n\nNAN is only possible due to the excellent work of the following contributors:\n\n<table><tbody>\n<tr><th align="left">Rod Vagg</th><td><a href="https://github.com/rvagg">GitHub/rvagg</a></td><td><a href="http://twitter.com/rvagg">Twitter/@rvagg</a></td></tr>\n<tr><th align="left">Benjamin Byholm</th><td><a href="https://github.com/kkoopa/">GitHub/kkoopa</a></td></tr>\n<tr><th align="left">Trevor Norris</th><td><a href="https://github.com/trevnorris">GitHub/trevnorris</a></td><td><a href="http://twitter.com/trevnorris">Twitter/@trevnorris</a></td></tr>\n</tbody></table>\n\nLicence &amp; copyright\n-----------------------\n\nCopyright (c) 2013 NAN contributors (listed above).\n\nNative Abstractions for Node.js is licensed under an MIT +no-false-attribs license. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE file for more details.\n',
156 silly resolved     readmeFilename: 'README.md',
156 silly resolved     bugs: { url: 'https://github.com/rvagg/nan/issues' },
156 silly resolved     homepage: 'https://github.com/rvagg/nan',
156 silly resolved     _id: 'nan@0.4.4',
156 silly resolved     _shasum: '9db58eae63cee119807a0d01afd0655d956bea75',
156 silly resolved     _from: 'nan@~0.4.4',
156 silly resolved     _resolved: 'https://registry.npmjs.org/nan/-/nan-0.4.4.tgz' },
156 silly resolved   { name: 'debug',
156 silly resolved     version: '0.8.1',
156 silly resolved     repository: { type: 'git', url: 'git://github.com/visionmedia/debug.git' },
156 silly resolved     description: 'small debugging utility',
156 silly resolved     keywords: [ 'debug', 'log', 'debugger' ],
156 silly resolved     author: { name: 'TJ Holowaychuk', email: 'tj@vision-media.ca' },
156 silly resolved     dependencies: {},
156 silly resolved     devDependencies: { mocha: '*' },
156 silly resolved     main: 'lib/debug.js',
156 silly resolved     browser: './debug.js',
156 silly resolved     engines: { node: '*' },
156 silly resolved     files: [ 'lib/debug.js', 'debug.js' ],
156 silly resolved     component: { scripts: [Object] },
156 silly resolved     readme: '# debug\n\n  tiny node.js debugging utility modelled after node core\'s debugging technique.\n\n## Installation\n\n```\n$ npm install debug\n```\n\n## Usage\n\n With `debug` you simply invoke the exported function to generate your debug function, passing it a name which will determine if a noop function is returned, or a decorated `console.error`, so all of the `console` format string goodies you\'re used to work fine. A unique color is selected per-function for visibility.\n\nExample _app.js_:\n\n```js\nvar debug = require(\'debug\')(\'http\')\n  , http = require(\'http\')\n  , name = \'My App\';\n\n// fake app\n\ndebug(\'booting %s\', name);\n\nhttp.createServer(function(req, res){\n  debug(req.method + \' \' + req.url);\n  res.end(\'hello\\n\');\n}).listen(3000, function(){\n  debug(\'listening\');\n});\n\n// fake worker of some kind\n\nrequire(\'./worker\');\n```\n\nExample _worker.js_:\n\n```js\nvar debug = require(\'debug\')(\'worker\');\n\nsetInterval(function(){\n  debug(\'doing some work\');\n}, 1000);\n```\n\n The __DEBUG__ environment variable is then used to enable these based on space or comma-delimited names. Here are some examples:\n\n  ![debug http and worker](http://f.cl.ly/items/18471z1H402O24072r1J/Screenshot.png)\n\n  ![debug worker](http://f.cl.ly/items/1X413v1a3M0d3C2c1E0i/Screenshot.png)\n\n## Millisecond diff\n\n  When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls.\n\n  ![](http://f.cl.ly/items/2i3h1d3t121M2Z1A3Q0N/Screenshot.png)\n\n  When stdout is not a TTY, `Date#toUTCString()` is used, making it more useful for logging the debug information as shown below:\n\n  ![](http://f.cl.ly/items/112H3i0e0o0P0a2Q2r11/Screenshot.png)\n\n## Conventions\n\n If you\'re using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser".\n\n## Wildcards\n\n  The `*` character may be used as a wildcard. Suppose for example your library has debuggers named "connect:bodyParser", "connect:compress", "connect:session", instead of listing all three with `DEBUG=connect:bodyParser,connect.compress,connect:session`, you may simply do `DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`.\n\n  You can also exclude specific debuggers by prefixing them with a "-" character.  For example, `DEBUG=* -connect:*` would include all debuggers except those starting with "connect:".\n\n## Browser support\n\n Debug works in the browser as well, currently persisted by `localStorage`. For example if you have `worker:a` and `worker:b` as shown below, and wish to debug both type `debug.enable(\'worker:*\')` in the console and refresh the page, this will remain until you disable with `debug.disable()`.\n\n```js\na = debug(\'worker:a\');\nb = debug(\'worker:b\');\n\nsetInterval(function(){\n  a(\'doing some work\');\n}, 1000);\n\nsetInterval(function(){\n  a(\'doing some work\');\n}, 1200);\n```\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2011 TJ Holowaychuk &lt;tj@vision-media.ca&gt;\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\'Software\'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \'AS IS\', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n',
156 silly resolved     readmeFilename: 'Readme.md',
156 silly resolved     bugs: { url: 'https://github.com/visionmedia/debug/issues' },
156 silly resolved     homepage: 'https://github.com/visionmedia/debug',
156 silly resolved     _id: 'debug@0.8.1',
156 silly resolved     _shasum: '20ff4d26f5e422cb68a1bacbbb61039ad8c1c130',
156 silly resolved     _from: 'debug@*',
156 silly resolved     _resolved: 'https://registry.npmjs.org/debug/-/debug-0.8.1.tgz' },
156 silly resolved   { name: 'bindings',
156 silly resolved     description: 'Helper module for loading your native module\'s .node file',
156 silly resolved     keywords: [ 'native', 'addon', 'bindings', 'gyp', 'waf', 'c', 'c++' ],
156 silly resolved     version: '1.2.0',
156 silly resolved     author:
156 silly resolved      { name: 'Nathan Rajlich',
156 silly resolved        email: 'nathan@tootallnate.net',
156 silly resolved        url: 'http://tootallnate.net' },
156 silly resolved     repository:
156 silly resolved      { type: 'git',
156 silly resolved        url: 'git://github.com/TooTallNate/node-bindings.git' },
156 silly resolved     main: './bindings.js',
156 silly resolved     readme: 'node-bindings\n=============\n### Helper module for loading your native module\'s .node file\n\nThis is a helper module for authors of Node.js native addon modules.\nIt is basically the "swiss army knife" of `require()`ing your native module\'s\n`.node` file.\n\nThroughout the course of Node\'s native addon history, addons have ended up being\ncompiled in a variety of different places, depending on which build tool and which\nversion of node was used. To make matters worse, now the _gyp_ build tool can\nproduce either a _Release_ or _Debug_ build, each being built into different\nlocations.\n\nThis module checks _all_ the possible locations that a native addon would be built\nat, and returns the first one that loads successfully.\n\n\nInstallation\n------------\n\nInstall with `npm`:\n\n``` bash\n$ npm install bindings\n```\n\nOr add it to the `"dependencies"` section of your _package.json_ file.\n\n\nExample\n-------\n\n`require()`ing the proper bindings file for the current node version, platform\nand architecture is as simple as:\n\n``` js\nvar bindings = require(\'bindings\')(\'binding.node\')\n\n// Use your bindings defined in your C files\nbindings.your_c_function()\n```\n\n\nNice Error Output\n-----------------\n\nWhen the `.node` file could not be loaded, `node-bindings` throws an Error with\na nice error message telling you exactly what was tried. You can also check the\n`err.tries` Array property.\n\n```\nError: Could not load the bindings file. Tried:\n → /Users/nrajlich/ref/build/binding.node\n → /Users/nrajlich/ref/build/Debug/binding.node\n → /Users/nrajlich/ref/build/Release/binding.node\n → /Users/nrajlich/ref/out/Debug/binding.node\n → /Users/nrajlich/ref/Debug/binding.node\n → /Users/nrajlich/ref/out/Release/binding.node\n → /Users/nrajlich/ref/Release/binding.node\n → /Users/nrajlich/ref/build/default/binding.node\n → /Users/nrajlich/ref/compiled/0.8.2/darwin/x64/binding.node\n    at bindings (/Users/nrajlich/ref/node_modules/bindings/bindings.js:84:13)\n    at Object.<anonymous> (/Users/nrajlich/ref/lib/ref.js:5:47)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    ...\n```\n\n\nLicense\n-------\n\n(The MIT License)\n\nCopyright (c) 2012 Nathan Rajlich &lt;nathan@tootallnate.net&gt;\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\'Software\'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \'AS IS\', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n',
156 silly resolved     readmeFilename: 'README.md',
156 silly resolved     bugs: { url: 'https://github.com/TooTallNate/node-bindings/issues' },
156 silly resolved     homepage: 'https://github.com/TooTallNate/node-bindings',
156 silly resolved     _id: 'bindings@1.2.0',
156 silly resolved     _shasum: 'c224fc5b349a84043779f97a6271d9d70da7636f',
156 silly resolved     _from: 'bindings@*',
156 silly resolved     _resolved: 'https://registry.npmjs.org/bindings/-/bindings-1.2.0.tgz' } ]
157 info install nan@0.4.4 into D:\Dev\chatbot\node_modules\time
158 info install debug@0.8.1 into D:\Dev\chatbot\node_modules\time
159 info install bindings@1.2.0 into D:\Dev\chatbot\node_modules\time
160 info installOne nan@0.4.4
161 info installOne debug@0.8.1
162 info installOne bindings@1.2.0
163 info D:\Dev\chatbot\node_modules\time\node_modules\nan unbuild
164 info D:\Dev\chatbot\node_modules\time\node_modules\debug unbuild
165 info D:\Dev\chatbot\node_modules\time\node_modules\bindings unbuild
166 verbose tar unpack C:\Users\Dustin\AppData\Roaming\npm-cache\nan\0.4.4\package.tgz
167 silly lockFile f995488e-de-modules-time-node-modules-nan tar://D:\Dev\chatbot\node_modules\time\node_modules\nan
168 verbose lock tar://D:\Dev\chatbot\node_modules\time\node_modules\nan C:\Users\Dustin\AppData\Roaming\npm-cache\f995488e-de-modules-time-node-modules-nan.lock
169 silly lockFile be02e6c3--npm-cache-nan-0-4-4-package-tgz tar://C:\Users\Dustin\AppData\Roaming\npm-cache\nan\0.4.4\package.tgz
170 verbose lock tar://C:\Users\Dustin\AppData\Roaming\npm-cache\nan\0.4.4\package.tgz C:\Users\Dustin\AppData\Roaming\npm-cache\be02e6c3--npm-cache-nan-0-4-4-package-tgz.lock
171 verbose tar unpack C:\Users\Dustin\AppData\Roaming\npm-cache\debug\0.8.1\package.tgz
172 silly lockFile 36cd7221--modules-time-node-modules-debug tar://D:\Dev\chatbot\node_modules\time\node_modules\debug
173 verbose lock tar://D:\Dev\chatbot\node_modules\time\node_modules\debug C:\Users\Dustin\AppData\Roaming\npm-cache\36cd7221--modules-time-node-modules-debug.lock
174 silly lockFile 3a3528e3-pm-cache-debug-0-8-1-package-tgz tar://C:\Users\Dustin\AppData\Roaming\npm-cache\debug\0.8.1\package.tgz
175 verbose lock tar://C:\Users\Dustin\AppData\Roaming\npm-cache\debug\0.8.1\package.tgz C:\Users\Dustin\AppData\Roaming\npm-cache\3a3528e3-pm-cache-debug-0-8-1-package-tgz.lock
176 verbose tar unpack C:\Users\Dustin\AppData\Roaming\npm-cache\bindings\1.2.0\package.tgz
177 silly lockFile 894acc7b-dules-time-node-modules-bindings tar://D:\Dev\chatbot\node_modules\time\node_modules\bindings
178 verbose lock tar://D:\Dev\chatbot\node_modules\time\node_modules\bindings C:\Users\Dustin\AppData\Roaming\npm-cache\894acc7b-dules-time-node-modules-bindings.lock
179 silly lockFile 8686990c-cache-bindings-1-2-0-package-tgz tar://C:\Users\Dustin\AppData\Roaming\npm-cache\bindings\1.2.0\package.tgz
180 verbose lock tar://C:\Users\Dustin\AppData\Roaming\npm-cache\bindings\1.2.0\package.tgz C:\Users\Dustin\AppData\Roaming\npm-cache\8686990c-cache-bindings-1-2-0-package-tgz.lock
181 silly gunzTarPerm modes [ '755', '644' ]
182 silly gunzTarPerm modes [ '755', '644' ]
183 silly gunzTarPerm modes [ '755', '644' ]
184 silly gunzTarPerm extractEntry package.json
185 silly gunzTarPerm extractEntry package.json
186 silly gunzTarPerm extractEntry package.json
187 silly gunzTarPerm extractEntry README.md
188 silly gunzTarPerm extractEntry LICENSE
189 silly gunzTarPerm extractEntry .index.js
190 silly gunzTarPerm extractEntry nan.h
191 silly gunzTarPerm extractEntry README.md
192 silly gunzTarPerm extractEntry bindings.js
193 silly gunzTarPerm extractEntry debug.js
194 silly gunzTarPerm extractEntry Readme.md
195 silly gunzTarPerm extractEntry lib/debug.js
196 silly lockFile 894acc7b-dules-time-node-modules-bindings tar://D:\Dev\chatbot\node_modules\time\node_modules\bindings
197 silly lockFile 894acc7b-dules-time-node-modules-bindings tar://D:\Dev\chatbot\node_modules\time\node_modules\bindings
198 silly lockFile 8686990c-cache-bindings-1-2-0-package-tgz tar://C:\Users\Dustin\AppData\Roaming\npm-cache\bindings\1.2.0\package.tgz
199 silly lockFile 8686990c-cache-bindings-1-2-0-package-tgz tar://C:\Users\Dustin\AppData\Roaming\npm-cache\bindings\1.2.0\package.tgz
200 info preinstall bindings@1.2.0
201 verbose readDependencies using package.json deps
202 verbose readDependencies using package.json deps
203 silly resolved []
204 verbose about to build D:\Dev\chatbot\node_modules\time\node_modules\bindings
205 info build D:\Dev\chatbot\node_modules\time\node_modules\bindings
206 verbose linkStuff [ false,
206 verbose linkStuff   false,
206 verbose linkStuff   false,
206 verbose linkStuff   'D:\\Dev\\chatbot\\node_modules\\time\\node_modules' ]
207 info linkStuff bindings@1.2.0
208 verbose linkBins bindings@1.2.0
209 verbose linkMans bindings@1.2.0
210 verbose rebuildBundles bindings@1.2.0
211 info install bindings@1.2.0
212 info postinstall bindings@1.2.0
213 silly lockFile 36cd7221--modules-time-node-modules-debug tar://D:\Dev\chatbot\node_modules\time\node_modules\debug
214 silly lockFile 36cd7221--modules-time-node-modules-debug tar://D:\Dev\chatbot\node_modules\time\node_modules\debug
215 silly lockFile 3a3528e3-pm-cache-debug-0-8-1-package-tgz tar://C:\Users\Dustin\AppData\Roaming\npm-cache\debug\0.8.1\package.tgz
216 silly lockFile 3a3528e3-pm-cache-debug-0-8-1-package-tgz tar://C:\Users\Dustin\AppData\Roaming\npm-cache\debug\0.8.1\package.tgz
217 info preinstall debug@0.8.1
218 verbose readDependencies using package.json deps
219 verbose readDependencies using package.json deps
220 silly resolved []
221 verbose about to build D:\Dev\chatbot\node_modules\time\node_modules\debug
222 info build D:\Dev\chatbot\node_modules\time\node_modules\debug
223 verbose linkStuff [ false,
223 verbose linkStuff   false,
223 verbose linkStuff   false,
223 verbose linkStuff   'D:\\Dev\\chatbot\\node_modules\\time\\node_modules' ]
224 info linkStuff debug@0.8.1
225 verbose linkBins debug@0.8.1
226 verbose linkMans debug@0.8.1
227 verbose rebuildBundles debug@0.8.1
228 info install debug@0.8.1
229 info postinstall debug@0.8.1
230 silly lockFile f995488e-de-modules-time-node-modules-nan tar://D:\Dev\chatbot\node_modules\time\node_modules\nan
231 silly lockFile f995488e-de-modules-time-node-modules-nan tar://D:\Dev\chatbot\node_modules\time\node_modules\nan
232 silly lockFile be02e6c3--npm-cache-nan-0-4-4-package-tgz tar://C:\Users\Dustin\AppData\Roaming\npm-cache\nan\0.4.4\package.tgz
233 silly lockFile be02e6c3--npm-cache-nan-0-4-4-package-tgz tar://C:\Users\Dustin\AppData\Roaming\npm-cache\nan\0.4.4\package.tgz
234 info preinstall nan@0.4.4
235 verbose readDependencies using package.json deps
236 verbose readDependencies using package.json deps
237 silly resolved []
238 verbose about to build D:\Dev\chatbot\node_modules\time\node_modules\nan
239 info build D:\Dev\chatbot\node_modules\time\node_modules\nan
240 verbose linkStuff [ false,
240 verbose linkStuff   false,
240 verbose linkStuff   false,
240 verbose linkStuff   'D:\\Dev\\chatbot\\node_modules\\time\\node_modules' ]
241 info linkStuff nan@0.4.4
242 verbose linkBins nan@0.4.4
243 verbose linkMans nan@0.4.4
244 verbose rebuildBundles nan@0.4.4
245 info install nan@0.4.4
246 info postinstall nan@0.4.4
247 verbose about to build D:\Dev\chatbot\node_modules\time
248 info build D:\Dev\chatbot\node_modules\time
249 verbose linkStuff [ false, false, false, 'D:\\Dev\\chatbot\\node_modules' ]
250 info linkStuff time@0.10.0
251 verbose linkBins time@0.10.0
252 verbose linkMans time@0.10.0
253 verbose rebuildBundles time@0.10.0
254 verbose rebuildBundles [ 'bindings', 'debug', 'nan' ]
255 info install time@0.10.0
256 verbose unsafe-perm in lifecycle true
257 info time@0.10.0 Failed to exec install script
258 info D:\Dev\chatbot\node_modules\time unbuild
259 info preuninstall time@0.10.0
260 info uninstall time@0.10.0
261 verbose true,D:\Dev\chatbot\node_modules,D:\Dev\chatbot\node_modules unbuild time@0.10.0
262 info postuninstall time@0.10.0
263 error time@0.10.0 install: `node-gyp rebuild`
263 error Exit status 1
264 error Failed at the time@0.10.0 install script.
264 error This is most likely a problem with the time package,
264 error not with npm itself.
264 error Tell the author that this fails on your system:
264 error     node-gyp rebuild
264 error You can get their info via:
264 error     npm owner ls time
264 error There is likely additional logging output above.
265 error System Windows_NT 6.2.9200
266 error command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "time"
267 error cwd D:\Dev\chatbot
268 error node -v v0.10.28
269 error npm -v 1.4.9
270 error code ELIFECYCLE
271 verbose exit [ 1, true ]
TooTallNate commented 10 years ago

@demonicpagan So you're on Windows man, it's not supported at this time (#13).

dustin-lennon commented 10 years ago

Ok, will do my test over on my linux machine then