Actualmente estoy construyendo mi proyecto angular a través de un paquete web con source-map-loader para extraer mapas de origen, así:
module.exports = { // ... module: { rules: [ { test: /\.js$/, enforce: "pre", use: ["source-map-loader"], }, ], }, };
Esto funciona bien con mi compilación Angular 11. Una vez que actualizo mis paquetes angulares a Angular 12, empiezo a recibir el siguiente error:
Module build failed (from ./node_modules/source-map-loader/dist/cjs.js): TypeError: this.getOptions is not a function at Object.loader (./node_modules/source-map-loader/dist/index.js:21:24)
Eliminar esta sección de mi módulo webpack permite que la compilación tenga éxito, pero ya no estoy extrayendo los mapas de origen, lo que hace que mi paquete aumente de tamaño.
Intenté actualizar source-map-loader a la última versión y no cambié el error. He investigado el node_module y se queja de esta sección del código:
async function loader(input, inputMap) { const options = this.getOptions(_options.default);
He visto muchas otras preguntas aquí con respecto a sass-loader y otros cargadores de estilo para Vue, pero esto es para Angular y está loco por extraer mapas de origen.
Hay algunos cambios importantes al pasar a Angular 12, pero la actualización a webpack 5.0.0 no parece marcar la diferencia.
¿Qué otras cosas puedo hacer para depurar esto?
Al mirar el código fuente v 1.1.3 , vemos
import { getOptions } from "loader-utils";
Pero después de v2.0 o incluso v3.0 , esta importación se eliminó.
Proviene de la biblioteca loader-utils
Desde v2.0, package.json
ya no lo importa.
Parece que ha quedado obsoleto, getOptions
debe usarse del tipo Webpack
en lugar de loader-utils
.
Tal vez su error provenga de un conflicto con una dependencia anterior de sus node_modules
, debe eliminar el anterior de su directorio e intentar nuevamente
rm -rf node_modules/@types/loader-utils rm -rf node_modules/loader-utils