记录开发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了。

相关文章
相关标签/搜索