| 
									
										
										
										
											2015-08-31 19:22:06 -07:00
										 |  |  | # Using Native Node Modules
 | 
					
						
							| 
									
										
										
										
											2013-09-09 15:35:57 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-16 11:31:12 +08:00
										 |  |  | The native Node modules are supported by Electron, but since Electron is | 
					
						
							| 
									
										
										
										
											2015-04-12 21:46:50 +08:00
										 |  |  | using a different V8 version from official Node, you have to manually specify | 
					
						
							| 
									
										
										
										
											2015-04-16 11:31:12 +08:00
										 |  |  | the location of Electron's headers when building native modules. | 
					
						
							| 
									
										
										
										
											2014-09-08 15:07:33 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-31 19:22:06 -07:00
										 |  |  | ## Native Node Module Compatibility
 | 
					
						
							| 
									
										
										
										
											2014-04-30 15:03:14 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-05 17:48:48 +03:00
										 |  |  | Native modules might break when Node starts using a new version of V8. | 
					
						
							|  |  |  | To make sure the module you're interested in will work with Electron, you should | 
					
						
							|  |  |  | check if it supports the internal Node version used by Electron. | 
					
						
							|  |  |  | You can check what version of Node is used in Electron by looking it up in | 
					
						
							|  |  |  | the [releases](https://github.com/atom/electron/releases) page or by using | 
					
						
							|  |  |  | `process.version` (see [Quick Start](https://github.com/atom/electron/blob/master/docs/tutorial/quick-start.md) | 
					
						
							|  |  |  | for example). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Consider using [NAN](https://github.com/nodejs/nan/) for your own modules, since | 
					
						
							|  |  |  | it makes it easier to support multiple versions of Node. It's also helpful for | 
					
						
							|  |  |  | porting old modules to newer versions of Node so they can work with Electron. | 
					
						
							| 
									
										
										
										
											2014-04-30 15:03:14 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-31 19:22:06 -07:00
										 |  |  | ## How to Install Native Modules
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Three ways to install native modules: | 
					
						
							| 
									
										
										
										
											2014-02-20 18:51:57 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-04 22:39:55 -07:00
										 |  |  | ### The Easy Way
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-31 19:22:06 -07:00
										 |  |  | The most straightforward way to rebuild native modules is via the | 
					
						
							|  |  |  | [`electron-rebuild`](https://github.com/paulcbetts/electron-rebuild) package, | 
					
						
							| 
									
										
										
										
											2015-05-04 22:39:55 -07:00
										 |  |  | which handles the manual steps of downloading headers and building native modules: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```sh | 
					
						
							|  |  |  | npm install --save-dev electron-rebuild | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-23 11:37:51 +03:00
										 |  |  | # Every time you run "npm install", run this
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Linux or Mac
 | 
					
						
							| 
									
										
										
										
											2015-09-10 11:00:43 -07:00
										 |  |  | node ./node_modules/.bin/electron-rebuild | 
					
						
							| 
									
										
										
										
											2015-10-23 11:37:51 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Windows
 | 
					
						
							|  |  |  | ./node_modules/.bin/electron-rebuild | 
					
						
							| 
									
										
										
										
											2015-05-04 22:39:55 -07:00
										 |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-09-24 16:17:42 +08:00
										 |  |  | ### The npm Way
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | You can also use `npm` to install modules. The steps are exactly the same with | 
					
						
							|  |  |  | Node modules, except that you need to setup some environment variables: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```bash | 
					
						
							|  |  |  | export npm_config_disturl=https://atom.io/download/atom-shell | 
					
						
							|  |  |  | export npm_config_target=0.33.1 | 
					
						
							|  |  |  | export npm_config_arch=x64 | 
					
						
							|  |  |  | export npm_config_runtime=electron | 
					
						
							|  |  |  | HOME=~/.electron-gyp npm install module-name | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-31 19:22:06 -07:00
										 |  |  | ### The node-gyp Way
 | 
					
						
							| 
									
										
										
										
											2014-02-20 18:51:57 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-16 11:31:12 +08:00
										 |  |  | To build Node modules with headers of Electron, you need to tell `node-gyp` | 
					
						
							| 
									
										
										
										
											2014-09-08 15:07:33 +08:00
										 |  |  | where to download headers and which version to use: | 
					
						
							| 
									
										
										
										
											2013-08-14 15:43:35 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | ```bash | 
					
						
							|  |  |  | $ cd /path-to-module/ | 
					
						
							| 
									
										
										
										
											2015-07-06 14:05:15 +02:00
										 |  |  | $ HOME=~/.electron-gyp node-gyp rebuild --target=0.29.1 --arch=x64 --dist-url=https://atom.io/download/atom-shell | 
					
						
							| 
									
										
										
										
											2013-08-14 15:43:35 -07:00
										 |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-16 11:31:12 +08:00
										 |  |  | The `HOME=~/.electron-gyp` changes where to find development headers. The | 
					
						
							| 
									
										
										
										
											2015-07-06 14:05:15 +02:00
										 |  |  | `--target=0.29.1` is version of Electron. The `--dist-url=...` specifies | 
					
						
							|  |  |  | where to download the headers. The `--arch=x64` says the module is built for | 
					
						
							| 
									
										
										
										
											2015-05-02 01:28:17 +07:00
										 |  |  | 64bit system. |