msgraph-sdk-javascript icon indicating copy to clipboard operation
msgraph-sdk-javascript copied to clipboard

Unable to import `TokenCredentialAuthenticationProvider` with ESM

Open onionhammer opened this issue 1 year ago • 4 comments

Bug Report

Unable to use TokenCredentialAuthenticationProvider with ESM

Prerequisites

  • [x] Can you reproduce the problem?
  • [x] Are you running the latest version?
  • [x] Are you reporting to the correct repository?
  • [x] Did you perform a cursory search?

For more information, see the CONTRIBUTING guide.

Description

Importing TokenCredentialAuthenticationProvider and running in node 18 fails.

Console Errors:

Error [ERR_UNSUPPORTED_DIR_IMPORT]: Directory import 'C:\Users\erikm\projects\graph-repro\node_modules\@microsoft\microsoft-graph-client\authProviders\azureTokenCredentials' is not supported resolving ES modules imported from C:\Users\erikm\projects\graph-repro\dist\index.js
Did you mean to import @microsoft/microsoft-graph-client/authProviders/azureTokenCredentials/index.js?
    at new NodeError (node:internal/errors:399:5)
    at finalizeResolution (node:internal/modules/esm/resolve:319:17)
    at moduleResolve (node:internal/modules/esm/resolve:945:10)
    at defaultResolve (node:internal/modules/esm/resolve:1153:11)
    at nextResolve (node:internal/modules/esm/loader:163:28)
    at ESMLoader.resolve (node:internal/modules/esm/loader:838:30)
    at ESMLoader.getModuleJob (node:internal/modules/esm/loader:424:18)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:77:40)
    at link (node:internal/modules/esm/module_job:76:36) {
  code: 'ERR_UNSUPPORTED_DIR_IMPORT',
  url: 'file:///C:/Users/erikm/projects/graph-repro/node_modules/@microsoft/microsoft-graph-client/authProviders/azureTokenCredentials'
}

Screenshots: [If applicable, add screenshots to help explain your problem]

Steps to Reproduce

  1. Install @microsoft/microsoft-graph-client
  2. Set type: "module" in package.json
  3. Create an index.js file with JUST this:
 import { TokenCredentialAuthenticationProvider } from '@microsoft/microsoft-graph-client/authProviders/azureTokenCredentials';
  1. Run node index.js

Expected behavior: The node application should run

Actual behavior: Errors with

Error [ERR_UNSUPPORTED_DIR_IMPORT]: Directory import

SDK Version -3.0.5

  • [x] Node (Check, if using Node version of SDK)

Node Version - v18.16.0

  • [ ] Browser (Check, if using Browser version of SDK)

Browser Name - [The name of Browser that you are using for SDK]

Version - [The version of the browser you are using]

onionhammer avatar Jul 28 '23 14:07 onionhammer

Thanks for reporting @onionhammer! I don't think we are doing a great job at ESM for the current version of the JS Graph client. We are currently building a v4 of the library based on https://aka.ms/kiota and its dependencies and we believe it'll be a lot better.

That being said, it's not a great experience currently and we'll see how big of a change this might be. @koros please have a look at reproducing.

sebastienlevert avatar Aug 03 '23 19:08 sebastienlevert

Related to #1385

sebastienlevert avatar Aug 09 '23 14:08 sebastienlevert

Hi guys, do we have any update on this issue? I have the same problem, I am using version 3.0.7 thanks

marcosolina avatar May 09 '24 14:05 marcosolina

Hi all, just sharing a quick workaround that worked for me while waiting for further updates here

import { TokenCredentialAuthenticationProvider } from "@microsoft/microsoft-graph-client/lib/src/authentication/azureTokenCredentials/TokenCredentialAuthenticationProvider.js";

marcosolina avatar May 14 '24 08:05 marcosolina