microsoftgraph / msgraph-sdk-javascript

Microsoft Graph client library for JavaScript
https://graph.microsoft.com
MIT License
733 stars 221 forks source link

Unable to import `TokenCredentialAuthenticationProvider` with ESM #1377

Open onionhammer opened 11 months ago

onionhammer commented 11 months ago

Bug Report

Unable to use TokenCredentialAuthenticationProvider with ESM

Prerequisites

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';
  4. 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

Node Version - v18.16.0

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

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

sebastienlevert commented 11 months ago

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 commented 11 months ago

Related to #1385

marcosolina commented 2 months ago

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

marcosolina commented 1 month ago

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";