# 使用原生模塊
Electron 同樣也支持原生模塊,但由于和官方的 Node 相比使用了不同的 V8 引擎,如果你想編譯原生模塊,則需要手動設置 Electron 的 headers 的位置。
## 原生Node模塊的兼容性
當 Node 開始換新的V8引擎版本時,原生模塊可能“壞”掉。為確保一切工作正常,你需要檢查你想要使用的原生模塊是否被 Electron 內置的 Node 支持。你可以在[這里](https://github.com/electron/electron/releases)查看 Electron 內置的 Node 版本,或者使用 `process.version` (參考:[快速入門](https://github.com/electron/electron/blob/master/docs/tutorial/quick-start.md))查看。
考慮到 [NAN](https://github.com/nodejs/nan/) 可以使你的開發更容易對多版本 Node 的支持,建議使用它來開發你自己的模塊。你也可以使用 [NAN](https://github.com/nodejs/nan/) 來移植舊的模塊到新的 Nod e版本,以使它們可以在新的 Electron 下良好工作。
## 如何安裝原生模塊
如下三種方法教你安裝原生模塊:
### 最簡單方式
最簡單的方式就是通過 [`electron-rebuild`](https://github.com/paulcbetts/electron-rebuild) 包重新編譯原生模塊,它幫你自動完成了下載 headers、編譯原生模塊等步驟:
```sh
npm install --save-dev electron-rebuild
# 每次運行"npm install"時,也運行這條命令
./node_modules/.bin/electron-rebuild
# 在windows下如果上述命令遇到了問題,嘗試這個:
.\node_modules\.bin\electron-rebuild.cmd
```
### 通過 npm 安裝
你當然也可以通過 `npm` 安裝原生模塊。大部分步驟和安裝普通模塊時一樣,除了以下一些系統環境變量你需要自己操作:
```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
```
### 通過 node-gyp 安裝
你需要告訴 `node-gyp` 去哪下載 Electron 的 headers,以及下載什么版本:
```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
```
`HOME=~/.electron-gyp` 設置去哪找開發時的 headers。
`--target=0.29.1` 設置了 Electron 的版本
`--dist-url=...` 設置了 Electron 的 headers 的下載地址
`--arch=x64` 設置了該模塊為適配64位操作系統而編譯
- 介紹
- 常見問題
- Electron 常見問題
- 向導
- 支持平臺
- 分發應用
- 提交應用到 Mac App Store
- 打包應用
- 使用 Node 原生模塊
- 主進程調試
- 使用 Selenium 和 WebDriver
- 使用開發人員工具擴展
- 使用 Pepper Flash 插件
- 使用 Widevine CDM 插件
- 教程
- 快速入門
- 桌面環境集成
- 在線/離線事件探測
- API文檔
- 簡介
- 進程對象
- 支持的 Chrome 命令行開關
- 環境變量
- 自定義的 DOM 元素
- File 對象
- <webview> 標簽
- window.open 函數
- 在主進程內可用的模塊
- app
- autoUpdater
- BrowserWindow
- contentTracing
- dialog
- globalShortcut
- ipcMain
- Menu
- MenuItem
- powerMonitor
- powerSaveBlocker
- protocol
- session
- webContents
- Tray
- 在渲染進程(網頁)內可用的模塊
- desktopCapturer
- ipcRenderer
- remote
- webFrame
- 在兩種進程中都可用的模塊
- clipboard
- crashReporter
- nativeImage
- screen
- shell
- 開發
- 代碼規范
- 源碼目錄結構
- 與 NW.js(原 node-webkit)在技術上的差異
- 構建系統概覽
- 構建步驟(OS X)
- 構建步驟(Windows)
- 構建步驟(Linux)
- 在調試中使用 Symbol Server