记录开发Nodejs c++ addon的一些经验(四、electron)

如果我们要在electron里使用我们开发的addon,那么直接使用是不行的。

官方的解释是:Electron 同样也支持原生模块,但由于和官方的 Node 相比使用了不同的 V8 引擎,如果你想编译原生模块,则需要手动设置 Electron 的 headers 的位置。

官方给出了几种解决办法,适用于不用场景:

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

写的已经足够清楚了,就不赘述了。

因为我们是使用自己开发的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了。

posted on 2017-09-29 11:43  渴望做梦  阅读(5083)  评论(0编辑  收藏  举报

导航