Skip to content

usb.on is not a function #428

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
JuanDa237 opened this issue Nov 15, 2023 · 15 comments
Open

usb.on is not a function #428

JuanDa237 opened this issue Nov 15, 2023 · 15 comments

Comments

@JuanDa237
Copy link

Node v18.15.0

"dependencies": {
"escpos": "^3.0.0-alpha.6",
"escpos-usb": "^3.0.0-alpha.4"
}

Code:

const escpos = require('escpos');
escpos.USB = require('escpos-usb');

const device = new escpos.USB(0x2BDF, 0x0280);
const printer = new escpos.Printer(device);

device.open(function (error) {
if (error) {
console.error('Error opening USB device:', error);
return;
}

printer
    .font('a')
    .align('ct')
    .style('bu')
    .size(1, 1)
    .text('Your Store Name')
    .text('----------------')
    .align('lt')
    .text('Item 1       $10.00')
    .text('Item 2        $7.50')
    .text('----------------')
    .align('rt')
    .text('Total:      $17.50')
    .cut()
    .close();

});

Error:
C:\Users\juan\Desktop\test-printer\node_modules\escpos-usb\index.js:52
usb.on('detach', function(device){
^

TypeError: usb.on is not a function
at new USB (C:\Users\x\Desktop\test-printer\node_modules\escpos-usb\index.js:52:7)
at Object. (C:\Users\x\Desktop\test-printer\index.js:5:16)
at Module._compile (node:internal/modules/cjs/loader:1254:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
at Module.load (node:internal/modules/cjs/loader:1117:32)
at Module._load (node:internal/modules/cjs/loader:958:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
at node:internal/main/run_main_module:23:47

@SZZH
Copy link

SZZH commented Nov 15, 2023

maybe you can try, usb module version to 1

@SZZH
Copy link

SZZH commented Nov 15, 2023

maybe you can try, usb module version to 1

pnpm i usb@1.x

@giegiey
Copy link

giegiey commented Jan 6, 2024

npm install -S usb@1.8.0

@joshuayoes
Copy link

You can also run apply this patch-package patch

Add this to patch/escpos-usb+3.0.0-alpha.4.patch

diff --git a/node_modules/escpos-usb/index.js b/node_modules/escpos-usb/index.js
index 8c21546..7b3aa42 100644
--- a/node_modules/escpos-usb/index.js
+++ b/node_modules/escpos-usb/index.js
@@ -25,7 +25,7 @@ const IFACE_CLASS = {
 function USB(vid, pid){
 
   if (!usb) {
-    usb = require('usb');
+    usb = require('usb').usb;
   }
 
   EventEmitter.call(this);
@@ -67,7 +67,7 @@ function USB(vid, pid){
  */
 USB.findPrinter = function(){
   if (!usb) {
-    usb = require('usb');
+    usb = require('usb').usb
   }
   return usb.getDeviceList().filter(function(device){
     try{

Then run npx patch-package in your project.

@codewithshinde
Copy link

This worked for me !!

  • go to node_modules/escpos-usb/index.js
  • comment down the following lines
  // usb.on('detach', function(device){
  //   if(device == self.device) {
  //     self.emit('detach'    , device);
  //     self.emit('disconnect', device);
  //     self.device = null;
  //   }
  // });

@Cu4rach4
Copy link

Hi, im fixed this using the latest version of usb.
"usb": "^1.8.8"

then use Zadig driver.

@Zetjen
Copy link
Contributor

Zetjen commented Nov 11, 2024

#429 This was merged and fixed

@alexoxte
Copy link

#429 This was merged and fixed

I use latest package for escpos-usb, but the error persist I try use directy github repository and branch on my package.json, but cannot use them because typescript code isn't transpiled. any suggestion for it?

@Zetjen
Copy link
Contributor

Zetjen commented Nov 26, 2024

I see that the npm registry was updated 4 years ago and the same with GH registry, so first don't use the npm and GH package.

You can try to install from the repo directly. And then build it with tsc.

@Zetjen
Copy link
Contributor

Zetjen commented Nov 26, 2024

I'll try to push a GH action to automatically deploy and compile the package.

@alexoxte
Copy link

Maybe is necessary update version on package.json in ecspos-usb package

@dann95
Copy link

dann95 commented Mar 11, 2025

is this project open to pr for update usage of node-usb to latest versions? on version 3 it has broken the api on the listener .on();
forcing users to set resolutions to node-usb max at 1.9.2, node-usb is 1.9.2 is a bit old and may cause some problem in complations like electron etc. If this project is open for pr, i can do it

@clopezpro
Copy link

I use the version ^3.0.0-alpha.6 and "ESCPOS-USB": " ^3.0.0-alpha.4"
And I must even comment on the line

Image
To work

@Zetjen
Copy link
Contributor

Zetjen commented Apr 2, 2025

@clopezpro I think that you can also do the following:

usb.usb.on('detach'....

so you don't lose the detach event.

Check this commit from a newer version: https://github.com/lsongdev/node-escpos/pull/429/files

@clopezpro
Copy link

@clopezpro I think that you can also do the following:

usb.usb.on('detach'....

so you don't lose the detach event.

Check this commit from a newer version: https://github.com/lsongdev/node-escpos/pull/429/files

Bro, how can I use the last version in which this is corrected, at the moment run npm i escpos-usb and the version with the USB.on error is installed

Image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

10 participants