如果我們要在electron里使用我們開發的addon,那么直接使用是不行的。
官方的解釋是:Electron 同樣也支持原生模塊,但由於和官方的 Node 相比使用了不同的 V8 引擎,如果你想編譯原生模塊,則需要手動設置 Electron 的 headers 的位置。
官方給出了幾種解決辦法,適用於不用場景:
寫的已經足夠清楚了,就不贅述了。
因為我們是使用自己開發的addon,所以采用了這種方式重新編譯:
編譯好之后,我把它放在了node_modules/addon里,另外新建了一個addon.js
const { wirteFile, readFile } = require('./build/Release/addon.node'); module.exports = { 'writeFile': writeFile, 'readFile': readFile }
配置package.json的'main':addon.js"
結合webpack這樣我就可以在其它頁面里通過require('addon')來使用它了,經過測試沒有問題。
但是當我打包的時候卻報了這樣一個錯誤,大概是這樣:
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文件,所以:
1、npm install --save node-loader
2、在webpack配置文件里添加相應的rule
module: { rules: [ text: /.node$/, use: 'node-loader' ] }
這樣就OK了。