2015-09-01 02:22:06 +00:00
|
|
|
# Using Native Node Modules
|
2013-09-09 07:35:57 +00:00
|
|
|
|
2015-04-16 03:31:12 +00:00
|
|
|
The native Node modules are supported by Electron, but since Electron is
|
2015-04-12 13:46:50 +00:00
|
|
|
using a different V8 version from official Node, you have to manually specify
|
2015-04-16 03:31:12 +00:00
|
|
|
the location of Electron's headers when building native modules.
|
2014-09-08 07:07:33 +00:00
|
|
|
|
2015-09-01 02:22:06 +00:00
|
|
|
## Native Node Module Compatibility
|
2014-04-30 07:03:14 +00:00
|
|
|
|
2015-10-05 14:48:48 +00: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 07:03:14 +00:00
|
|
|
|
2015-09-01 02:22:06 +00:00
|
|
|
## How to Install Native Modules
|
|
|
|
|
|
|
|
Three ways to install native modules:
|
2014-02-20 10:51:57 +00:00
|
|
|
|
2015-05-05 05:39:55 +00:00
|
|
|
### The Easy Way
|
|
|
|
|
2015-09-01 02:22:06 +00:00
|
|
|
The most straightforward way to rebuild native modules is via the
|
|
|
|
[`electron-rebuild`](https://github.com/paulcbetts/electron-rebuild) package,
|
2015-05-05 05:39:55 +00:00
|
|
|
which handles the manual steps of downloading headers and building native modules:
|
|
|
|
|
|
|
|
```sh
|
|
|
|
npm install --save-dev electron-rebuild
|
|
|
|
|
2015-09-01 02:22:06 +00:00
|
|
|
# Every time you run npm install, run this
|
2015-09-10 18:00:43 +00:00
|
|
|
node ./node_modules/.bin/electron-rebuild
|
2015-05-05 05:39:55 +00:00
|
|
|
```
|
|
|
|
|
2015-09-24 08:17:42 +00: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-09-01 02:22:06 +00:00
|
|
|
### The node-gyp Way
|
2014-02-20 10:51:57 +00:00
|
|
|
|
2015-04-16 03:31:12 +00:00
|
|
|
To build Node modules with headers of Electron, you need to tell `node-gyp`
|
2014-09-08 07:07:33 +00:00
|
|
|
where to download headers and which version to use:
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
|
|
```bash
|
|
|
|
$ cd /path-to-module/
|
2015-07-06 12:05:15 +00:00
|
|
|
$ HOME=~/.electron-gyp node-gyp rebuild --target=0.29.1 --arch=x64 --dist-url=https://atom.io/download/atom-shell
|
2013-08-14 22:43:35 +00:00
|
|
|
```
|
|
|
|
|
2015-04-16 03:31:12 +00:00
|
|
|
The `HOME=~/.electron-gyp` changes where to find development headers. The
|
2015-07-06 12:05:15 +00: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-01 18:28:17 +00:00
|
|
|
64bit system.
|