我创建了一个工作电子应用程序(使用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都放到了依赖项中(除了电子导致它不能)只是为了确保我在正确的地方有所有依赖项,但没有成功。