underscore - lodash-webpack-plugin
Lodash inesperadamente se inyecta en global cuando se lo requiere en subdependencia (1)
Mi aplicación depende de una biblioteca foolib
, la biblioteca foolib
tiene una dependencia de lodash y lo requiere a través de var _ = require(''lodash'')
Requerir resultados de foolib en lodash adjuntándose a la ventana
Descubrí que esto se debía a esto:
// Some AMD build optimizers, like r.js, check for condition patterns like:
if (typeof define == ''function'' && typeof define.amd == ''object'' && define.amd) {
// Expose Lodash on the global object to prevent errors when Lodash is
// loaded by a script tag in the presence of an AMD loader.
// See http://requirejs.org/docs/errors.html#mismatch for more details.
// Use `_.noConflict` to remove Lodash from the global object.
root._ = _;
Agregar un depurador en el cuerpo de los resultados condicionales en el desencadenador del depurador, pero la condición que provocó la entrada de la rama if ahora devuelve false
Al agregar un registro de consola antes del depurador para cerrar la sesión con el valor de define
, se define como definido por el webpack:///(webpack)/buildin/amd-define.js?0bba
con los contenidos de
module.exports = function() { throw new Error("define cannot be used indirect"); };
/*****************
** WEBPACK FOOTER
** (webpack)/buildin/amd-define.js
** module id = 875
** module chunks = 2
**/
Como estoy compilando con un paquete web, parece inesperado que esa condición con define
y define.amd
sea cierta
Encontré una solución:
https://github.com/webpack/webpack/issues/138#issuecomment-160638284
module: {
noParse: /node_modules//lodash//lodash/.js/,
}
Agregó eso a la configuración del paquete web y el problema fue resuelto