若是咱们要在electron里使用咱们开发的addon,那么直接使用是不行的。node
官方的解释是:Electron 一样也支持原生模块,但因为和官方的 Node 相比使用了不一样的 V8 引擎,若是你想编译原生模块,则须要手动设置 Electron 的 headers 的位置。webpack
官方给出了几种解决办法,适用于不用场景:git
写的已经足够清楚了,就不赘述了。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了。