記錄開發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了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM