<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Webpack 5 compatibility and crypto dependency when importing @azure/msal-node in Developer</title>
    <link>https://community.fabric.microsoft.com/t5/Developer/Webpack-5-compatibility-and-crypto-dependency-when-importing/m-p/4260331#M58040</link>
    <description>&lt;P&gt;Hello,&lt;BR /&gt;I'm trying to build the node exemple provided in an existing Webpack5 config running on node 18.&lt;BR /&gt;As soon as I import the class "ConfidentialClientApplication" from &lt;a href="https://community.fabric.microsoft.com/t5/user/viewprofilepage/user-id/136114"&gt;@Azure&lt;/a&gt;/msal-node, I get the following error on build :&lt;/P&gt;&lt;P&gt;"./node_modules/@azure/msal-node/dist/crypto/HashUtils.mjs" contains a reference to the file "crypto".&lt;BR /&gt;This file can not be found, please check it for typos or update it if the file got moved.&lt;/P&gt;&lt;P&gt;I tried to add aliases and polyfill to my webpack config.&lt;BR /&gt;For exemple, adding this :&lt;BR /&gt;config.resolve.fallback = {&lt;BR /&gt;crypto: require.resolve('crypto-browserify'),&lt;/P&gt;&lt;P&gt;But once crypto error is fixed, I get a lot of other libs not found anymore, like http, https, process, path etc...&lt;/P&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Core Library&lt;/H3&gt;&lt;P&gt;MSAL Node (@azure/msal-node)&lt;/P&gt;&lt;H3&gt;Core Library Version&lt;/H3&gt;&lt;P&gt;2.15.0&lt;/P&gt;&lt;H3&gt;Public or Confidential Client?&lt;/H3&gt;&lt;P&gt;Confidential&lt;/P&gt;&lt;H3&gt;Error Message&lt;/H3&gt;&lt;P&gt;"./node_modules/@azure/msal-node/dist/crypto/HashUtils.mjs" contains a reference to the file "crypto".&lt;BR /&gt;This file can not be found, please check it for typos or update it if the file got moved.&lt;/P&gt;&lt;H3&gt;MSAL Configuration&lt;/H3&gt;&lt;DIV class=""&gt;&lt;PRE&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;
  &lt;SPAN class=""&gt;"authenticationMode"&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"ServicePrincipal"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
  &lt;SPAN class=""&gt;"authorityUrl"&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"https://login.microsoftonline.com/"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
  &lt;SPAN class=""&gt;"scopeBase"&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"https://analysis.windows.net/powerbi/api/.default"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
  &lt;SPAN class=""&gt;"powerBiApiUrl"&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"https://api.powerbi.com/"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
  &lt;SPAN class=""&gt;"clientId"&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"xxxxx"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
  &lt;SPAN class=""&gt;"workspaceId"&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"xxxxx"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
  &lt;SPAN class=""&gt;"reportId"&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"xxxxx"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
  &lt;SPAN class=""&gt;"pbiUsername"&lt;/SPAN&gt;: &lt;SPAN class=""&gt;""&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
  &lt;SPAN class=""&gt;"pbiPassword"&lt;/SPAN&gt;: &lt;SPAN class=""&gt;""&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
  &lt;SPAN class=""&gt;"clientSecret"&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"xxxxx"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
  &lt;SPAN class=""&gt;"tenantId"&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"xxxxx"&lt;/SPAN&gt;
&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;/PRE&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;H3&gt;Relevant Code Snippets&lt;/H3&gt;&lt;DIV class=""&gt;&lt;PRE&gt;&lt;SPAN class=""&gt;const&lt;/SPAN&gt; &lt;SPAN class=""&gt;Encore&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;require&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;'@symfony/webpack-encore'&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;
&lt;SPAN class=""&gt;const&lt;/SPAN&gt; &lt;SPAN class=""&gt;Dotenv&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;require&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;'dotenv-webpack'&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;
&lt;SPAN class=""&gt;const&lt;/SPAN&gt; &lt;SPAN class=""&gt;BrowserSyncPlugin&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;require&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;"browser-sync-webpack-plugin"&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;

&lt;SPAN class=""&gt;if&lt;/SPAN&gt; &lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;!&lt;/SPAN&gt;&lt;SPAN class=""&gt;Encore&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;isRuntimeEnvironmentConfigured&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt; &lt;SPAN class=""&gt;{&lt;/SPAN&gt;
  &lt;SPAN class=""&gt;Encore&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;configureRuntimeEnvironment&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;process&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;env&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;NODE_ENV&lt;/SPAN&gt; &lt;SPAN class=""&gt;||&lt;/SPAN&gt; &lt;SPAN class=""&gt;'dev'&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;
&lt;SPAN class=""&gt;}&lt;/SPAN&gt;

&lt;SPAN class=""&gt;Encore&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;// directory where compiled assets will be stored&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;setOutputPath&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;'public/build/'&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;// public path used by the web server to access the output path&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;setPublicPath&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;'/en/private/build'&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;// only needed for CDN's or sub-directory deploy&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;setManifestKeyPrefix&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;'build'&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;


    &lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;addEntry&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;'main'&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;'./assets'&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;addEntry&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;'powerbi'&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;'./assets/javascript/powerbi/app.js'&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;enableStimulusBridge&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;'./assets/controllers.json'&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;splitEntryChunks&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;enableSingleRuntimeChunk&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;cleanupOutputBeforeBuild&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;enableBuildNotifications&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;enableSourceMaps&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;!&lt;/SPAN&gt;&lt;SPAN class=""&gt;Encore&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;isProduction&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;enableVersioning&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;Encore&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;isProduction&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;enableSassLoader&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;autoProvidejQuery&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;enableReactPreset&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;

    &lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;addPlugin&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;new&lt;/SPAN&gt; &lt;SPAN class=""&gt;Dotenv&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;systemvars&lt;/SPAN&gt;: &lt;SPAN class=""&gt;true&lt;/SPAN&gt;

    &lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;addPlugin&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;new&lt;/SPAN&gt; &lt;SPAN class=""&gt;BrowserSyncPlugin&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;{&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;host&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"localhost"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;port&lt;/SPAN&gt;: &lt;SPAN class=""&gt;8085&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;proxy&lt;/SPAN&gt;: &lt;SPAN class=""&gt;'localhost'&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;open&lt;/SPAN&gt;: &lt;SPAN class=""&gt;false&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;files&lt;/SPAN&gt;: &lt;SPAN class=""&gt;[&lt;/SPAN&gt; &lt;SPAN class=""&gt;// watch on changes&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;{&lt;/SPAN&gt;
                    &lt;SPAN class=""&gt;match&lt;/SPAN&gt;: &lt;SPAN class=""&gt;[&lt;/SPAN&gt;&lt;SPAN class=""&gt;'public/build/**/*.js'&lt;/SPAN&gt;&lt;SPAN class=""&gt;]&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
                    &lt;SPAN class=""&gt;fn&lt;/SPAN&gt;: &lt;SPAN class=""&gt;function&lt;/SPAN&gt; &lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;event&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;file&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt; &lt;SPAN class=""&gt;{&lt;/SPAN&gt;
                        &lt;SPAN class=""&gt;if&lt;/SPAN&gt; &lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;event&lt;/SPAN&gt; &lt;SPAN class=""&gt;===&lt;/SPAN&gt; &lt;SPAN class=""&gt;'change'&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt; &lt;SPAN class=""&gt;{&lt;/SPAN&gt;
                            &lt;SPAN class=""&gt;const&lt;/SPAN&gt; &lt;SPAN class=""&gt;bs&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;require&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;'browser-sync'&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;get&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;'bs-webpack-plugin'&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;
                            &lt;SPAN class=""&gt;bs&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;reload&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;
                        &lt;SPAN class=""&gt;}&lt;/SPAN&gt;
                    &lt;SPAN class=""&gt;}&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;}&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;]&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;notify&lt;/SPAN&gt;: &lt;SPAN class=""&gt;false&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;{&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;reload&lt;/SPAN&gt;: &lt;SPAN class=""&gt;false&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;name&lt;/SPAN&gt;: &lt;SPAN class=""&gt;'bs-webpack-plugin'&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;}&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
&lt;SPAN class=""&gt;;&lt;/SPAN&gt;

&lt;SPAN class=""&gt;const&lt;/SPAN&gt; &lt;SPAN class=""&gt;config&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;Encore&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;getWebpackConfig&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
&lt;SPAN class=""&gt;config&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;resolve&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;fallback&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;{&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;crypto&lt;/SPAN&gt;: &lt;SPAN class=""&gt;require&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;resolve&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;'crypto-browserify'&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;
&lt;SPAN class=""&gt;module&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;exports&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;config&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;H3&gt;Reproduction Steps&lt;/H3&gt;&lt;OL&gt;&lt;LI&gt;npm install &lt;a href="https://community.fabric.microsoft.com/t5/user/viewprofilepage/user-id/136114"&gt;@Azure&lt;/a&gt;/msal-node&lt;/LI&gt;&lt;LI&gt;import { PublicClientApplication} from "@azure/msal-node";&lt;/LI&gt;&lt;LI&gt;error is displayed after npm start&lt;/LI&gt;&lt;/OL&gt;&lt;H3&gt;Expected Behavior&lt;/H3&gt;&lt;P&gt;should not get an error at build&lt;/P&gt;&lt;H3&gt;Identity Provider&lt;/H3&gt;&lt;P&gt;Entra ID (formerly Azure AD) / MSA&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;issue submitted also&amp;nbsp;&lt;A href="https://github.com/AzureAD/microsoft-authentication-library-for-js/issues/7395" target="_self"&gt;here&lt;/A&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 28 Oct 2024 10:02:13 GMT</pubDate>
    <dc:creator>AnthonyF</dc:creator>
    <dc:date>2024-10-28T10:02:13Z</dc:date>
    <item>
      <title>Webpack 5 compatibility and crypto dependency when importing @azure/msal-node</title>
      <link>https://community.fabric.microsoft.com/t5/Developer/Webpack-5-compatibility-and-crypto-dependency-when-importing/m-p/4260331#M58040</link>
      <description>&lt;P&gt;Hello,&lt;BR /&gt;I'm trying to build the node exemple provided in an existing Webpack5 config running on node 18.&lt;BR /&gt;As soon as I import the class "ConfidentialClientApplication" from &lt;a href="https://community.fabric.microsoft.com/t5/user/viewprofilepage/user-id/136114"&gt;@Azure&lt;/a&gt;/msal-node, I get the following error on build :&lt;/P&gt;&lt;P&gt;"./node_modules/@azure/msal-node/dist/crypto/HashUtils.mjs" contains a reference to the file "crypto".&lt;BR /&gt;This file can not be found, please check it for typos or update it if the file got moved.&lt;/P&gt;&lt;P&gt;I tried to add aliases and polyfill to my webpack config.&lt;BR /&gt;For exemple, adding this :&lt;BR /&gt;config.resolve.fallback = {&lt;BR /&gt;crypto: require.resolve('crypto-browserify'),&lt;/P&gt;&lt;P&gt;But once crypto error is fixed, I get a lot of other libs not found anymore, like http, https, process, path etc...&lt;/P&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Core Library&lt;/H3&gt;&lt;P&gt;MSAL Node (@azure/msal-node)&lt;/P&gt;&lt;H3&gt;Core Library Version&lt;/H3&gt;&lt;P&gt;2.15.0&lt;/P&gt;&lt;H3&gt;Public or Confidential Client?&lt;/H3&gt;&lt;P&gt;Confidential&lt;/P&gt;&lt;H3&gt;Error Message&lt;/H3&gt;&lt;P&gt;"./node_modules/@azure/msal-node/dist/crypto/HashUtils.mjs" contains a reference to the file "crypto".&lt;BR /&gt;This file can not be found, please check it for typos or update it if the file got moved.&lt;/P&gt;&lt;H3&gt;MSAL Configuration&lt;/H3&gt;&lt;DIV class=""&gt;&lt;PRE&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;
  &lt;SPAN class=""&gt;"authenticationMode"&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"ServicePrincipal"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
  &lt;SPAN class=""&gt;"authorityUrl"&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"https://login.microsoftonline.com/"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
  &lt;SPAN class=""&gt;"scopeBase"&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"https://analysis.windows.net/powerbi/api/.default"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
  &lt;SPAN class=""&gt;"powerBiApiUrl"&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"https://api.powerbi.com/"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
  &lt;SPAN class=""&gt;"clientId"&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"xxxxx"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
  &lt;SPAN class=""&gt;"workspaceId"&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"xxxxx"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
  &lt;SPAN class=""&gt;"reportId"&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"xxxxx"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
  &lt;SPAN class=""&gt;"pbiUsername"&lt;/SPAN&gt;: &lt;SPAN class=""&gt;""&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
  &lt;SPAN class=""&gt;"pbiPassword"&lt;/SPAN&gt;: &lt;SPAN class=""&gt;""&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
  &lt;SPAN class=""&gt;"clientSecret"&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"xxxxx"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
  &lt;SPAN class=""&gt;"tenantId"&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"xxxxx"&lt;/SPAN&gt;
&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;/PRE&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;H3&gt;Relevant Code Snippets&lt;/H3&gt;&lt;DIV class=""&gt;&lt;PRE&gt;&lt;SPAN class=""&gt;const&lt;/SPAN&gt; &lt;SPAN class=""&gt;Encore&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;require&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;'@symfony/webpack-encore'&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;
&lt;SPAN class=""&gt;const&lt;/SPAN&gt; &lt;SPAN class=""&gt;Dotenv&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;require&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;'dotenv-webpack'&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;
&lt;SPAN class=""&gt;const&lt;/SPAN&gt; &lt;SPAN class=""&gt;BrowserSyncPlugin&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;require&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;"browser-sync-webpack-plugin"&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;

&lt;SPAN class=""&gt;if&lt;/SPAN&gt; &lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;!&lt;/SPAN&gt;&lt;SPAN class=""&gt;Encore&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;isRuntimeEnvironmentConfigured&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt; &lt;SPAN class=""&gt;{&lt;/SPAN&gt;
  &lt;SPAN class=""&gt;Encore&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;configureRuntimeEnvironment&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;process&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;env&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;NODE_ENV&lt;/SPAN&gt; &lt;SPAN class=""&gt;||&lt;/SPAN&gt; &lt;SPAN class=""&gt;'dev'&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;
&lt;SPAN class=""&gt;}&lt;/SPAN&gt;

&lt;SPAN class=""&gt;Encore&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;// directory where compiled assets will be stored&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;setOutputPath&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;'public/build/'&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;// public path used by the web server to access the output path&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;setPublicPath&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;'/en/private/build'&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;// only needed for CDN's or sub-directory deploy&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;setManifestKeyPrefix&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;'build'&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;


    &lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;addEntry&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;'main'&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;'./assets'&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;addEntry&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;'powerbi'&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;'./assets/javascript/powerbi/app.js'&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;enableStimulusBridge&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;'./assets/controllers.json'&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;splitEntryChunks&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;enableSingleRuntimeChunk&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;cleanupOutputBeforeBuild&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;enableBuildNotifications&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;enableSourceMaps&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;!&lt;/SPAN&gt;&lt;SPAN class=""&gt;Encore&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;isProduction&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;enableVersioning&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;Encore&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;isProduction&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;enableSassLoader&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;autoProvidejQuery&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;enableReactPreset&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;

    &lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;addPlugin&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;new&lt;/SPAN&gt; &lt;SPAN class=""&gt;Dotenv&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;systemvars&lt;/SPAN&gt;: &lt;SPAN class=""&gt;true&lt;/SPAN&gt;

    &lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;addPlugin&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;new&lt;/SPAN&gt; &lt;SPAN class=""&gt;BrowserSyncPlugin&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;{&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;host&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"localhost"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;port&lt;/SPAN&gt;: &lt;SPAN class=""&gt;8085&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;proxy&lt;/SPAN&gt;: &lt;SPAN class=""&gt;'localhost'&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;open&lt;/SPAN&gt;: &lt;SPAN class=""&gt;false&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;files&lt;/SPAN&gt;: &lt;SPAN class=""&gt;[&lt;/SPAN&gt; &lt;SPAN class=""&gt;// watch on changes&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;{&lt;/SPAN&gt;
                    &lt;SPAN class=""&gt;match&lt;/SPAN&gt;: &lt;SPAN class=""&gt;[&lt;/SPAN&gt;&lt;SPAN class=""&gt;'public/build/**/*.js'&lt;/SPAN&gt;&lt;SPAN class=""&gt;]&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
                    &lt;SPAN class=""&gt;fn&lt;/SPAN&gt;: &lt;SPAN class=""&gt;function&lt;/SPAN&gt; &lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;event&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;file&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt; &lt;SPAN class=""&gt;{&lt;/SPAN&gt;
                        &lt;SPAN class=""&gt;if&lt;/SPAN&gt; &lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;event&lt;/SPAN&gt; &lt;SPAN class=""&gt;===&lt;/SPAN&gt; &lt;SPAN class=""&gt;'change'&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt; &lt;SPAN class=""&gt;{&lt;/SPAN&gt;
                            &lt;SPAN class=""&gt;const&lt;/SPAN&gt; &lt;SPAN class=""&gt;bs&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;require&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;'browser-sync'&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;get&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;'bs-webpack-plugin'&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;
                            &lt;SPAN class=""&gt;bs&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;reload&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;
                        &lt;SPAN class=""&gt;}&lt;/SPAN&gt;
                    &lt;SPAN class=""&gt;}&lt;/SPAN&gt;
                &lt;SPAN class=""&gt;}&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;]&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;notify&lt;/SPAN&gt;: &lt;SPAN class=""&gt;false&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;{&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;reload&lt;/SPAN&gt;: &lt;SPAN class=""&gt;false&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;name&lt;/SPAN&gt;: &lt;SPAN class=""&gt;'bs-webpack-plugin'&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;}&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
&lt;SPAN class=""&gt;;&lt;/SPAN&gt;

&lt;SPAN class=""&gt;const&lt;/SPAN&gt; &lt;SPAN class=""&gt;config&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;Encore&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;getWebpackConfig&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
&lt;SPAN class=""&gt;config&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;resolve&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;fallback&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;{&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;crypto&lt;/SPAN&gt;: &lt;SPAN class=""&gt;require&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;resolve&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;'crypto-browserify'&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;
&lt;SPAN class=""&gt;module&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;exports&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;config&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;H3&gt;Reproduction Steps&lt;/H3&gt;&lt;OL&gt;&lt;LI&gt;npm install &lt;a href="https://community.fabric.microsoft.com/t5/user/viewprofilepage/user-id/136114"&gt;@Azure&lt;/a&gt;/msal-node&lt;/LI&gt;&lt;LI&gt;import { PublicClientApplication} from "@azure/msal-node";&lt;/LI&gt;&lt;LI&gt;error is displayed after npm start&lt;/LI&gt;&lt;/OL&gt;&lt;H3&gt;Expected Behavior&lt;/H3&gt;&lt;P&gt;should not get an error at build&lt;/P&gt;&lt;H3&gt;Identity Provider&lt;/H3&gt;&lt;P&gt;Entra ID (formerly Azure AD) / MSA&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;issue submitted also&amp;nbsp;&lt;A href="https://github.com/AzureAD/microsoft-authentication-library-for-js/issues/7395" target="_self"&gt;here&lt;/A&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 28 Oct 2024 10:02:13 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Developer/Webpack-5-compatibility-and-crypto-dependency-when-importing/m-p/4260331#M58040</guid>
      <dc:creator>AnthonyF</dc:creator>
      <dc:date>2024-10-28T10:02:13Z</dc:date>
    </item>
    <item>
      <title>Re: Webpack 5 compatibility and crypto dependency when importing @azure/msal-node</title>
      <link>https://community.fabric.microsoft.com/t5/Developer/Webpack-5-compatibility-and-crypto-dependency-when-importing/m-p/4261524#M58052</link>
      <description>&lt;P style="margin: 0in; font-family: Arial; font-size: 12.0pt; color: black;"&gt;Hi,&amp;nbsp;&lt;a href="https://community.fabric.microsoft.com/t5/user/viewprofilepage/user-id/831229"&gt;@AnthonyF&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="margin: 0in; font-family: Arial; font-size: 12.0pt; color: black;" lang="zh-CN"&gt;Firstly, as Webpack 5 no longer includes polyfills for Node.js core modules by default, you will need to add them explicitly. You've already begun addressing the crypto module, but you'll also need to add polyfills for other modules.Below are screenshots from the relevant documentation:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="vlinyulumsft_0-1730178181546.png" style="width: 400px;"&gt;&lt;img src="https://community.fabric.microsoft.com/t5/image/serverpage/image-id/1190815iDEE993AA47ACEA7D/image-size/medium?v=v2&amp;amp;px=400" role="button" title="vlinyulumsft_0-1730178181546.png" alt="vlinyulumsft_0-1730178181546.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P style="margin: 0in; font-family: Arial; font-size: 12.0pt; color: black;" lang="zh-CN"&gt;For further details, please refer to:&lt;/P&gt;
&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;A href="https://webpack.js.org/configuration/resolve/" target="_blank"&gt;&lt;SPAN&gt;Resolve | webpack&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;" lang="zh-CN"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="margin: 0in; font-family: Arial; font-size: 12.0pt; color: black;" lang="zh-CN"&gt;Secondly, ensure that you have installed the necessary polyfill packages.&lt;/P&gt;
&lt;P style="margin: 0in; font-family: Arial; font-size: 12.0pt; color: black;" lang="zh-CN"&gt;Here are some reference examples:&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;npm install --save-dev crypto-browserify stream-browserify assert stream-http https-browserify os-browserify url buffer process
&lt;/LI-CODE&gt;
&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;A href="https://www.alchemy.com/blog/how-to-polyfill-node-core-modules-in-webpack-5" target="_blank"&gt;&lt;SPAN&gt;How to polyfill node core modules in webpack 5&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;" lang="zh-CN"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="margin: 0in; font-family: Arial; font-size: 12.0pt; color: black;" lang="zh-CN"&gt;Next, make sure your Webpack configuration is correctly set up to handle .mjs files:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="vlinyulumsft_1-1730178219275.png" style="width: 400px;"&gt;&lt;img src="https://community.fabric.microsoft.com/t5/image/serverpage/image-id/1190816iF9A283DF9E589A12/image-size/medium?v=v2&amp;amp;px=400" role="button" title="vlinyulumsft_1-1730178219275.png" alt="vlinyulumsft_1-1730178219275.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;A href="https://webpack.js.org/concepts/loaders/" target="_blank"&gt;&lt;SPAN&gt;Loaders | webpack&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P style="margin: 0in; font-family: Arial; font-size: 12.0pt; color: black;" lang="zh-CN"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="margin: 0in; font-family: Arial; font-size: 12.0pt; color: black;" lang="zh-CN"&gt;Finally, here are some related documents I found that I hope will be helpful to you:&lt;/P&gt;
&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;"&gt;&lt;A href="https://dev.to/marcinwosinek/how-to-add-resolve-fallback-to-webpack-5-in-nextjs-10-i6j" target="_blank"&gt;webpack 5 &amp;amp; next.js 10 - how to add resolve fallback to config - DEV Community&lt;/A&gt;&lt;/P&gt;
&lt;P style="margin: 0in;"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://nextjs.org/docs/app/api-reference/next-config-js/webpack" target="_blank"&gt;&lt;SPAN&gt;next.config.js Options: webpack | Next.js&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;Of course, if you have any new discoveries or questions, please feel free to get in touch with us.&lt;BR /&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="margin: 0in; font-family: Arial; font-size: 12.0pt; color: black;"&gt;Best Regards,&lt;/P&gt;
&lt;P style="margin: 0in; font-family: Arial; font-size: 12.0pt; color: black;"&gt;Leroy Lu&lt;/P&gt;
&lt;P style="margin: 0in; font-family: Arial; font-size: 12.0pt; color: black;"&gt;If this post &lt;EM&gt;&lt;STRONG&gt;helps&lt;/STRONG&gt;&lt;/EM&gt;, then please consider Accept it &lt;EM&gt;&lt;STRONG&gt;as the solution &lt;/STRONG&gt;&lt;/EM&gt;to help the other members find it more quickly.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 29 Oct 2024 05:04:20 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Developer/Webpack-5-compatibility-and-crypto-dependency-when-importing/m-p/4261524#M58052</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2024-10-29T05:04:20Z</dc:date>
    </item>
    <item>
      <title>Re: Webpack 5 compatibility and crypto dependency when importing @azure/msal-node</title>
      <link>https://community.fabric.microsoft.com/t5/Developer/Webpack-5-compatibility-and-crypto-dependency-when-importing/m-p/4263459#M58079</link>
      <description>&lt;P&gt;Thanks for the help, it really helped me.&lt;BR /&gt;A little more detail on the polyfill package I used,&amp;nbsp;&lt;A href="https://github.com/Richienb/node-polyfill-webpack-plugin" target="_self"&gt;https://github.com/Richienb/node-polyfill-webpack-plugin&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;"Process" has to be specified in the config of this package, that was the tricky part&lt;/P&gt;</description>
      <pubDate>Wed, 30 Oct 2024 08:06:29 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Developer/Webpack-5-compatibility-and-crypto-dependency-when-importing/m-p/4263459#M58079</guid>
      <dc:creator>AnthonyF</dc:creator>
      <dc:date>2024-10-30T08:06:29Z</dc:date>
    </item>
  </channel>
</rss>

