Estaba revisando una de las bibliotecas que creé con webpack5 y tuve que cargar dinámicamente uno de los scripts en tiempo de ejecución. Me di cuenta de que si intento ese paquete web externo, simplemente obtengo un módulo vacío como resultado. Entonces creo que ese es un problema debido a UMD, revisemos la ventana. Debería encontrar sg como window.mylib['module'] pero aún no hay nada. Esto solo sucede en el navegador. Si agrego cualquier proyecto que consuma esas bibliotecas con un paquete web, funciona completamente bien.
webpack.config
{ optimization: { minimize: true, }, entry: entry, output: { clean: true, publicPath: '', filename: "[name]_[contenthash:4].js", library: ["mylib", "[name]"], libraryTarget: "umd", //tried a combination of a lot of configs still no global }, plugins: [ new WebpackManifestPlugin(), ], module: { rules: [ { test: /\.s[ac]ss$/i, use: [ { loader: 'file-loader', options: { context: './src/', name: '[path][name]_[contenthash:4].css', }, }, { loader: 'sass-loader', options: { sassOptions: { outputStyle: "compressed", }, } }, ], }, { test: /\.m?js$/, exclude: /node_modules/, use: [ { loader: 'babel-loader', options: { presets: [ ['@babel/preset-react',] ] } }, ] }, ], }, externalsType: 'umd', externals: { // 'react': isProduction ? 'react' : './src/vendor/react.js', 'react': 'react', }, };Ya que estoy intentando esto desde sharepoint en línea. Estoy seguro de que esto se debe a que tengo requirejs en la página, por lo que nunca llegamos a la parte donde se establece el global.
Si configuro tanto "requerir" como "definir" en indefinido, puedo importar módulos dinámicamente correctamente y se establece el global. Pero por supuesto que no quiero y no debo hacer eso.
Mi pregunta es si hay alguna forma de mantener la estructura del módulo, pero omitir la verificación de requisitos e ir directamente a la configuración global.