Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Wrong function on network adapter close?

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

Dieses Issue hat noch niemand übernommen.

Bewertung

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

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.

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..

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

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus lsongdev/node-escpos

Alle Issues in lsongdev/node-escpos

Ähnliche Issues

Weitere Issues zu TypeScript

Neue Issues direkt in Ihr Postfach

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