在Angular2 / Electron中导入@pokusew / pcsclite会引发TypeError

时间:2017-03-18 18:29:31

标签: angular typescript electron pcsc

我在Electron中运行了一个Angular CLI项目。我试图通过在我的一个组件中导入@pokusew/pcsclite来使用NFC功能。我使用import * as pcsclite from "../../node_modules/@pokusew/pcsclite"导入库。但是,一旦我调用this.pcsc = pcsclite(),我在控制台中出现以下错误:

  

TypeError:exists不是函数

在构建过程中:

  警告在./~/bindings.js

中      

严重依赖:依赖的请求是表达式

1 个答案:

答案 0 :(得分:0)

TypeError: exists is not a function似乎是节点绑定模块中的错误。请参阅:https://github.com/TooTallNate/node-bindings/pull/20

新版本在NPM上可用时应该修复。

然而,更进一步,当使用AngularCLI / Webpack时,此修复仍然不会使@pokusew/pcsclite工作。要使其在此设置中有效@pokusew/pcsclite,需要使用node-loader而不是node-bindings来加载绑定文件。您可以在本地更改它:

编辑“/node_modules/@pokusew/pcsclite/package.json”:

"dependencies": {
  "bindings": "github:tootallnate/node-bindings#pull/20/head", < Instead of this,
  "node-loader": "^0.6.0", << use this
  "nan": "^2.5.1"
},

然后编辑“/node_modules/@pokusew/pcsclite/lib/pcsclite.js”

const pcsclite = require('node-loader!./../build/Release/pcsclite.node');