Search code examples
javascriptangulartypescriptelectronpcsc

Requiring a JavaScript Node.js module in TypeScript (allowJs' is not set)


I have an Angular2 app inside Electron. Now, I would like to use the @pokusew/pcsclite library to use NFC functionality. This library uses native Node.js modules.

When I try to require the library in my component.ts like this:

declare var pcsclite: any;
var pcsclite = require('../../../node_modules/@pokusew/pcsclite/');

I get and error that says:

error TS6143: Module '../..' was resolved to '../../lib/pcsclite.js', but '--allowJs' is not set.

On the other hand, if I try to import the library via a <\script>-Tag in the index.html I get an error that says:

ZoneAwareError Error: Could not locate the bindings file. Tried:...

Finally, if I var pcsclite = require('@pokusew/pcsclite'); in the main.js, then it works, but then I don't have access to it from inside my Angular app.


Solution

  • Add the allowJs option in your tsconfig.json like this:
    as fabian lauer said also add outDir option to specify where your compiled files will be:

    {
        "compilerOptions": {
            "outDir": "./built", <--- add this
            "allowJs": true,  <--- and this
            "target": "es5"
        },
        "include": [
            "./src/**/*"
        ]
    }