alexwhitman / node-pushbullet-api

PushBullet API module for Node.js
164 stars 36 forks source link

Trouble integrating ES6 module in NodeJS #46

Open mvermand22 opened 2 years ago

mvermand22 commented 2 years ago

Can you please provide a full working example of how to use the library in NodeJS? I do not succeed in loading the library.

I always get errors such as

Error [ERR_UNSUPPORTED_ESM_URL_SCHEME]: Only file and data URLs are supported by
 the default ESM loader

or Error [ERR_REQUIRE_ESM]: Must use import to load ES Module

This is my tsconfig.json:

{
  "compilerOptions": {
    "module": "CommonJS",
    "target": "ES6",
    "outDir": "./dist",
  },
  "exclude": [
    "node_modules"
  ]
}

I tried to add and remove the type = "module" line in package.json. I tried

let PushBullet = require('pushbullet');

or

import {PushBullet} from 'pushbullet';

or

import {PushBullet} from '../node_modules/pushbullet/lib/pushbullet.js';

All without luck... Please provide a working example with tsconfig.json and package.json included.

I am working on Windows 10, Node 14.0.3, npm 6.14.5.

Many thanks!

alexwhitman commented 2 years ago

I think you're almost there, the import just needs tweaking.

import PushBullet from 'pushbullet';

const pb = new PushBullet('API_KEY');

(async () => {
        try {
                let result = await pb.me();
                console.log(await result.json());
        }
        catch (e) {
                console.log(e.message);
        }
})();
joekiller commented 2 years ago

It took me about a day to get this running on typescript as well. I guess commonjs is on the way out for everything.

Minimal steps to make it work.

In package.json include "type": "module". In tsconfig.json ensure under compilerOptions you have "module": "es6" or whatever ES target you want. It will not work with a commonjs module setting.