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