与电子封装器一起打包的电子应用程序不能用于其他电脑的nfc-pcsc

时间:2018-05-29 07:17:01

标签: node.js vue.js electron nfc

我创建了一个工作电子应用程序(使用vue和nfc-pcsc),所以现在我尝试分发它。

我使用电子打包器打包应用程序winx64(其他电脑也是64位!),当我在开发电脑上运行可执行文件时,它在办公室中的任何其他电脑上运行它不起作用。

所以我开始调试并发现NFC-PCSC库在其他PC上造成了问题。我通过在我的.vue组件中取消注释已安装和之前的修改而找到了。(其中只处理了nfc-pcsc功能)。

<template>
    <v-container>
        <v-card style="margin-top: 25px;">
            <v-card-title>
                <h1 :style="styleHeading">Scan employee card<div :class="getClass()"><span v-if="!nfcReady">un</span>ready</div><v-btn style="float:right;" @click="backdoorLogin()">Backdoor login</v-btn></h1>
            </v-card-title>
            <v-card-text style="text-align: center;">
                <img  id="scan" src="../../assets/nfc-card.png"></img>
            </v-card-text>
        </v-card>
    </v-container>
</template>

    <script>
        import {Login, Backdoor} from '../../assets/js/auth.js';
       import {NFC} from 'nfc-pcsc';
        var log = require('electron-log');

        export default {
           data(){
                return {
                nfc: null,
                readers: new Set(),
                    styleHeading : {
                           backgroundColor: 
                           this.$parent.$config.THEME.COLORS.h1Background,
                           color: this.$parent.$config.THEME.COLORS.h1Text
                        },
                nfcReady: false
                }
           },
           created(){
            log.info('created');
           },
           mounted(){
              log.info('Mounted start')

              var nfc = new NFC();
                    nfc.on('reader',reader => {
                this.nfcReady = true;
                this.readers.add(reader);
                        console.log(`${reader.reader.name}  device attached`);
                //if a card is being scanned
                        reader.on('card', card => {
                  //do a login api call to see if an employee has this card uid.
                  Login(card.uid).then((response) => {
                      this.$router.push({name: 'Main'})
                  }).catch(() =>{
                    alert('nope')
                  })
                            console.log(`${reader.reader.name}  card detected`, card);
                        });

                reader.on('error', error => {
                  //console.log(error);
                })
                reader.on('end', () => {
                 this.nfcReady = false;
                });
                    });

              nfc.on('error', error => {
                console.log(error);
              })

              log.info('Mounted end')
            },
            beforeDestroy(){
               // stops listening for new readers and stops listening on all the readers too
              this.nfc.close();

              this.readers.forEach(reader => {
                  reader.close();
              });
            }
        }
    </script>

我有理解为什么它只能在我的电脑上工作的问题。我已经把所有devDependencies都放到了依赖项中(除了电子导致它不能)只是为了确保我在正确的地方有所有依赖项,但没有成功。

0 个答案:

没有答案