lsongdev / lsongdev/node-escpos

Wrong function on network adapter close?

Offen
#424 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
TypeScript
Sterne
1.6k
Forks
443
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

First of all, I am just a hobby programmer :)

So basically this is my function.
I have an order which has many order_pos. From the order_pos i can get the corresponding printer (different item different printer)
For your information, i am generating an image which is printed. So i dont have to worry about encoding (like my names show) can print all fonts I want and all sizes I want.
But this is just a side note.
```
static async printOrder(order: Order) {
PrintingService.splitOrderToPrintRequest(order).then(pr => {
for (let printerInfo of pr) {
(new Network(printerInfo.printerAddress)).open((x, device) => {
PrintingService.getOrderFromIDAndPrinters(order.id, printerInfo.id).then(realOrder => {
if (!realOrder) {
throw new Error("Order is null")
}
try {
// @ts-ignore
const printer = new Printer(device, { encoding: "cp437" })
printer.image(new fickEncodings(realOrder, false).toImage()).then(p => {
p.cut;
p.close()
})
}
catch (err) {
console.log(err)
}
})

})
}
})
}
```
You can see i am using the inteded way in the function. But i get following error.

```
node_modules\@node-escpos\core\dist\index.cjs:1167
return new Promise((resolve, reject) => {
^
TypeError: this.adapter.close is not a function
```
with a `console.log(p)` in runtime I did see that **THE ADAPTER** has no `close()` instead there is an `end()`
So I tried changing this part
```
async close(...closeArgs) {
await this.flush();
return new Promise((resolve, reject) => {
this.adapter.close((error) => {
if (error)
reject(error);
resolve(this);
}, ...closeArgs);
});
}
```
to this:
```
async close(...closeArgs) {
await this.flush();
return new Promise((resolve, reject) => {
this.adapter.end((error) => {
if (error)
reject(error);
resolve(this);
}, ...closeArgs);
});
}
```

So i dont know if this is happening to any of you. But with this change its working for me.
plus: i dont have any problems with Too much requests, the printjobs will just wait and print after each other. Magic..

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne in node_modules/@node-escpos/core/dist/index.cjs bei der close-Implementierung und vergleiche die im Issue gezeigte Adapter-API. Reproduziere den Fehler beim Schließen des Adapters und überprüfe anschließend, dass der Netzwerkadapter über seine verfügbare Methode geschlossen werden kann, ohne flush oder die Fehlerbehandlung zu beeinträchtigen. Fertig ist die Änderung, wenn eine Druckerverbindung ohne diesen TypeError geschlossen werden kann.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
node.js, typescript
Bereich
embedded-iot, networking
Issue-Typ
Bug
Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.