pokusew / nfc-pcsc

Easy reading and writing NFC tags and cards in Node.js
MIT License
535 stars 132 forks source link

Cannot access "events.EventEmitter" in client code #147

Closed Kazturin closed 1 year ago

Kazturin commented 1 year ago

Hi.
error: Module "events" has been externalized for browser compatibility. Cannot access "events.EventEmitter" in client code

pokusew commented 1 year ago

Hi @Kazturin,

Thank you for posting your issue here. 👍

It looks like a problem with your setup. Where are you trying to run nfc-pcsc? What build tools / bundlers are you using?

First, please note that nfc-pcsc can be used only in Node.js (either Node.js directly or in Electron.js).
nfc-pcsc cannot be used directly in browsers.

Second, make sure you correctly set up any build tools or bundlers (webpack, Rollup, Vite, etc.) you use to target Node.js and not to attempt to make it browser-compatible.

Hope it helps. Let me know. 🙂

Kazturin commented 1 year ago

Hi @Kazturin,

Thank you for posting your issue here. 👍

It looks like a problem with your setup. Where are you trying to run nfc-pcsc? What build tools / bundlers are you using?

First, please note that nfc-pcsc can be used only in Node.js (either Node.js directly or in Electron.js). nfc-pcsc cannot be used directly in browsers.

Second, make sure you correctly set up any build tools or bundlers (webpack, Rollup, Vite, etc.) you use to target Node.js and not to attempt to make it browser-compatible.

Hope it helps. Let me know. 🙂

Hi pokusew. Thanks a lot. I didn't expect such a quick response :) Windows 10 OS, using vite builder, node v18.18

If I clone the project https://github.com/pokusew/nfc-pcsc.git and run it, then this error occurs: Screenshot_9

pokusew commented 1 year ago

Hi @Kazturin,

Thank you for the details you provided.

First, I've just fixed the error you encountered while cloning and running the example (npm run example). Thank you for posting the screenshot here. 👍 The error was affecting only some of the examples (so, for example, npm run example-uid-logger worked). Nevertheless, everything should work now after the fix. Can you please try again and let me know if it works for you now? Just to be sure, please delete the directory with the cloned repo, clone it again, run npm install, and finally try npm run example.

Second, you mentioned you use Vite in your project.
Note that nfc-pcsc can be used only in Node.js (either Node.js directly or in Electron.js). Your Vite setup is probably the reason you see the error: Module "events" has been externalized for browser compatibility. Cannot access "events.EventEmitter" in client code.
I think that you need to appropriately set the build.target in Vite's build options. Probably to something like node18.

Hope it helps. Let me know. 🙂

Kazturin commented 1 year ago

Thanks @pokusew , the examples run without errors.