記錄開發Nodejs c++ addon的一些經驗(4、electron)

若是咱們要在electron裏使用咱們開發的addon,那麼直接使用是不行的。node

官方的解釋是:Electron 一樣也支持原生模塊,但因爲和官方的 Node 相比使用了不一樣的 V8 引擎,若是你想編譯原生模塊,則須要手動設置 Electron 的 headers 的位置。webpack

官方給出了幾種解決辦法,適用於不用場景:git

https://github.com/electron/electron/blob/master/docs-translations/zh-CN/tutorial/using-native-node-modules.mdgithub

寫的已經足夠清楚了,就不贅述了。web

由於咱們是使用本身開發的addon,因此採用了這種方式從新編譯:npm

編譯好以後,我把它放在了node_modules/addon裏,另外新建了一個addon.jsjson

const { wirteFile, readFile } = require('./build/Release/addon.node');

module.exports = {
  'writeFile': writeFile,
  'readFile': readFile      
}

配置package.json'main':addon.js"app

結合webpack這樣我就能夠在其它頁面裏經過require('addon')來使用它了,通過測試沒有問題。electron

可是當我打包的時候卻報了這樣一個錯誤,大概是這樣:測試

Module parse failed: src/node_modules/webpack/package.json Line 2: Unexpected token :
You may need an appropriate loader to handle this file type.

這是由於webpack裏面沒有適合的loader去解析node文件,因此:

一、npm install --save node-loader

二、在webpack配置文件裏添加相應的rule

module: {
  rules: [
      text: /.node$/,
      use: 'node-loader'
    ]       
}

這樣就OK了。

相關文章
相關標籤/搜索