Приложение Electron, поставляемое в комплекте с электронным упаковщиком, не работает на других компьютерах по причине nfc-pcsc - PullRequest
0 голосов
/ 29 мая 2018

Я создал работающее электронное приложение (с vue и nfc-pcsc), так что теперь я пытаюсь его распространить.

Я использовал электронный упаковщик для упаковки приложения winx64 (другие ПК тоже 64-битные!), Когда я запускаю исполняемый файл на компьютере разработчика, он работает, когда я запускаю его на любом другом компьютере в офисе, которого нет.,

Итак, я начал отладку и обнаружил, что библиотека NFC-PCSC вызывает проблемы на других компьютерах.Я выяснил это, закомментировав смонтированный и ранее уничтоженный в моем компоненте .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 в зависимости (кроме электрона, потому что он не может), просто чтобы убедиться, что все зависимости находятся в нужном месте, но безуспешно.

...