Skip to content

Wrong function on network adapter close? #424

@cheesy304

Description

@cheesy304

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions