67 lines
		
	
	
	
		
			2.4 KiB
			
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
	
		
			2.4 KiB
			
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Using Native Node Modules
 | |
| 
 | |
| The native Node modules are supported by Electron, but since Electron is
 | |
| using a different V8 version from official Node, you have to manually specify
 | |
| the location of Electron's headers when building native modules.
 | |
| 
 | |
| ## Native Node Module Compatibility
 | |
| 
 | |
| 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.
 | |
| 
 | |
| ## How to Install Native Modules
 | |
| 
 | |
| Three ways to install native modules:
 | |
| 
 | |
| ### The Easy Way
 | |
| 
 | |
| The most straightforward way to rebuild native modules is via the
 | |
| [`electron-rebuild`](https://github.com/paulcbetts/electron-rebuild) package,
 | |
| which handles the manual steps of downloading headers and building native modules:
 | |
| 
 | |
| ```sh
 | |
| npm install --save-dev electron-rebuild
 | |
| 
 | |
| # Every time you run "npm install", run this
 | |
| ./node_modules/.bin/electron-rebuild
 | |
| 
 | |
| # On Windows if you have trouble, try:
 | |
| .\node_modules\.bin\electron-rebuild.cmd
 | |
| ```
 | |
| 
 | |
| ### 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
 | |
| ```
 | |
| 
 | |
| ### The node-gyp Way
 | |
| 
 | |
| To build Node modules with headers of Electron, you need to tell `node-gyp`
 | |
| where to download headers and which version to use:
 | |
| 
 | |
| ```bash
 | |
| $ cd /path-to-module/
 | |
| $ HOME=~/.electron-gyp node-gyp rebuild --target=0.29.1 --arch=x64 --dist-url=https://atom.io/download/atom-shell
 | |
| ```
 | |
| 
 | |
| The `HOME=~/.electron-gyp` changes where to find development headers. The
 | |
| `--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
 | |
| 64bit system.
 | 
