2014-10-02 21:51:05 +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
|
|
|
|
2014-05-07 06:34:53 +00:00
|
|
|
## Native Node module compatibility
|
2014-04-30 07:03:14 +00:00
|
|
|
|
2014-09-08 07:07:33 +00:00
|
|
|
Since Node v0.11.x there were vital changes in the V8 API. So generally all
|
|
|
|
native modules written for Node v0.10.x wouldn't work for Node v0.11.x. And
|
2015-04-16 03:31:12 +00:00
|
|
|
because Electron internally uses Node v0.11.13, it carries with the same
|
2014-09-08 07:07:33 +00:00
|
|
|
problem.
|
2014-04-30 07:03:14 +00:00
|
|
|
|
2014-09-08 07:07:33 +00:00
|
|
|
To solve this, you should use modules that support Node v0.11.x,
|
|
|
|
[many modules](https://www.npmjs.org/browse/depended/nan) do support both now.
|
2014-05-07 05:06:35 +00:00
|
|
|
For old modules that only support Node v0.10.x, you should use the
|
2014-04-30 07:03:14 +00:00
|
|
|
[nan](https://github.com/rvagg/nan) module to port it to v0.11.x.
|
|
|
|
|
2015-04-12 13:46:50 +00:00
|
|
|
## How to install native modules
|
2014-02-20 10:51:57 +00:00
|
|
|
|
2014-04-30 07:03:14 +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-04-16 03:31:12 +00:00
|
|
|
$ HOME=~/.electron-gyp node-gyp rebuild --target=0.16.0 --arch=ia32 --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
|
|
|
|
`--target=0.16.0` is version of Electron. The `--dist-url=...` specifies
|
2014-09-08 07:07:33 +00:00
|
|
|
where to download the headers. The `--arch=ia32` says the module is built for
|
|
|
|
32bit system.
|
2013-08-14 22:43:35 +00:00
|
|
|
|
2014-04-30 07:03:14 +00:00
|
|
|
### The npm way
|
2013-08-14 22:43:35 +00:00
|
|
|
|
2015-04-12 13:46:50 +00:00
|
|
|
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:
|
|
|
|
|
2013-08-14 22:43:35 +00:00
|
|
|
```bash
|
2015-01-23 20:16:49 +00:00
|
|
|
export npm_config_disturl=https://atom.io/download/atom-shell
|
2015-04-12 13:46:50 +00:00
|
|
|
export npm_config_target=0.23.0
|
|
|
|
export npm_config_arch=x64
|
2015-04-16 03:31:12 +00:00
|
|
|
HOME=~/.electron-gyp npm install module-name
|
2013-08-29 14:37:51 +00:00
|
|
|
```
|