jlguenego / node-expose-sspi

Expose Microsoft Windows SSPI to Node for SSO authentication.
ISC License
128 stars 19 forks source link

ERR_REQUIRE_ESM when running the usage example from repository's readme.md #102

Open lkavicky opened 3 years ago

lkavicky commented 3 years ago

Describe the bug When running the basic usage example from repository's readme, I'm getting following error:

internal/modules/cjs/loader.js:1085
      throw new ERR_REQUIRE_ESM(filename, parentPath, packageJsonPath);
      ^

Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: D:\workspace\node-sspi-exp3\node_modules\node-fetch\src\index.js
require() of ES modules is not supported.
require() of D:\workspace\node-sspi-exp3\node_modules\node-fetch\src\index.js from D:\workspace\node-sspi-exp3\node_modules\node-expose-sspi\dist\sso\client.js is an ES module file as it is a .js file whose nearest parent package.json contains "type": "module" which defines all .js files in that package scope as ES modules.
Instead rename index.js to end in .cjs, change the requiring code to use import(), or remove "type": "module" from D:\workspace\node-sspi-exp3\node_modules\node-fetch\package.json.

    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1085:13)
    at Module.load (internal/modules/cjs/loader.js:933:32)
    at Function.Module._load (internal/modules/cjs/loader.js:774:14)
    at Module.require (internal/modules/cjs/loader.js:957:19)
    at require (internal/modules/cjs/helpers.js:88:18)
    at Object.<anonymous> (D:\workspace\node-sspi-exp3\node_modules\node-expose-sspi\dist\sso\client.js:7:38)
    at Module._compile (internal/modules/cjs/loader.js:1068:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10)
    at Module.load (internal/modules/cjs/loader.js:933:32)
    at Function.Module._load (internal/modules/cjs/loader.js:774:14) {
  code: 'ERR_REQUIRE_ESM'
}

To Reproduce

The same steps and flow as in readme:

mkdir myproject
cd myproject
npm init -y
npm i express
npm i node-expose-sspi
...
node server.js

server.js:

const express = require('express');
const { sso } = require('node-expose-sspi');

const app = express();
app.use(sso.auth());

app.use((req, res, next) => {
  res.json({
    sso: req.sso,
  });
});

app.listen(3000, () => console.log('Server started on port 3000'));

Expected behavior Run without errors.

Environment version:

mishra-animesh commented 3 years ago

I am also facing a similar issue.

jlguenego commented 3 years ago

Yes I am able to reproduce it.

It is probably because of the node-fetch library. The author released a new version which causes the issue. Quick fix: npm i node-fetch@3.0.0-beta.9

What I am going to do is to fix the node-fetch version.

jlguenego commented 3 years ago

It is fixed. Please test.

mishra-animesh commented 3 years ago

I tested and it works perfectly fine. Thanks a lot for quick turnaround :)

lkavicky commented 3 years ago

It's working for me too, thanks a lot!