无法在electron项目的main.js中使用keytar

无法在electron项目的main.js中使用keytar,electron,vuetify.js,electron-builder,keytar,Electron,Vuetify.js,Electron Builder,Keytar,我不断地发现这个错误: error in ./node_modules/keytar/build/Release/keytar.node Module parse failed: Unexpected character '�' (1:2) You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See htt

我不断地发现这个错误:

 error  in ./node_modules/keytar/build/Release/keytar.node

Module parse failed: Unexpected character '�' (1:2)
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
(Source code omitted for this binary file)

 @ ./node_modules/keytar/lib/keytar.js 1:13-52
 @ ./src/background.js
 @ multi ./src/background.js
我将
background.js
设置为
package.json
中的主电子文件,因为我使用的是vue/vuetify,它也使用
main.js
文件

{
  "name": "project",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint",
    "electron:build": "vue-cli-service electron:build",
    "electron:serve": "vue-cli-service electron:serve",
    "postinstall": "electron-builder install-app-deps",
    "postuninstall": "electron-builder install-app-deps"
  },
  "main": "background.js",    // <------------------ see right here
  "dependencies": {
    "axios": "^0.19.0",
    "core-js": "^3.4.3",
    "jwt-decode": "^2.2.0",
    "keytar": "^5.0.0",
    "request": "^2.88.0",
    "vue": "^2.6.10",
    "vue-router": "^3.1.3",
    "vuetify": "^2.1.0",
    "vuex": "^3.1.2"
  },
  "devDependencies": {
    "@vue/cli-plugin-babel": "^4.1.0",
    "@vue/cli-plugin-eslint": "^4.1.0",
    "@vue/cli-service": "^4.1.0",
    "babel-eslint": "^10.0.3",
    "electron": "^7.1.3",
    "eslint": "^5.16.0",
    "eslint-plugin-vue": "^5.0.0",
    "node-loader": "^0.6.0",
    "sass": "^1.19.0",
    "sass-loader": "^8.0.0",
    "vue-cli-plugin-electron-builder": "^1.4.3",
    "vue-cli-plugin-vuetify": "^2.0.2",
    "vue-template-compiler": "^2.6.10",
    "vuetify-loader": "^1.3.0"
  },
  "eslintConfig": {
    "root": true,
    "env": {
      "node": true
    },
    "extends": [
      "plugin:vue/essential",
      "eslint:recommended"
    ],
    "rules": {},
    "parserOptions": {
      "parser": "babel-eslint"
    }
  },
  "browserslist": [
    "> 1%",
    "last 2 versions"
  ]
}
{
“名称”:“项目”,
“版本”:“0.1.0”,
“私人”:没错,
“脚本”:{
“服务”:“vue cli服务服务”,
“生成”:“vue cli服务生成”,
“lint”:“vue cli服务lint”,
“electron:build”:“vue cli服务electron:build”,
“electron:serve”:“vue cli服务electron:serve”,
“postinstall”:“electron builder安装应用程序deps”,
“姿势安装”:“electron builder安装应用程序deps”
},

“main”:“background.js”,我需要将keytar标记为外部(如中所述)

一旦我这样做了,它工作正常。

运行适当的()

// vue.config.js
module.exports = {
  pluginOptions: {
    electronBuilder: {
      // List native deps here if they don't work
      externals: ['keytar']
    }
  }
}
yarn add node-loader -D
// vue.config.js
configureWebpack: {
    devtool: 'source-map',
    module: {
      rules: [
        { test: /\.node$/, loader: 'node-loader' }
      ]
    }
  }