Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

274
Vistas
Programmatic Webpack & Jest (ESM): no se puede resolver el módulo sin la extensión de archivo '.js'

Estoy usando webpack programáticamente, con mecanografiado, ESM y broma. En una prueba de broma, obtengo errores por no incluir una extensión de archivo .js al importar módulos ES. Por ejemplo:

 Module not found: Error: Can't resolve 'modulename' in '/path/components' Did you mean 'modulename.js'? BREAKING CHANGE: The request 'modulename' failed to resolve only because it was resolved as fully specified (probably because the origin is strict EcmaScript Module, eg a module with javascript mimetype, a '*.mjs' file, or a '*.js' file where the package.json contains '"type": "module"'). The extension in the request is mandatory for it to be fully specified. Add the extension to the request.

De hecho, el módulo en cuestión tiene "type": "module" establecido en su package.json . He intentado agregar .js a la importación y no ayuda.

Estoy invocando broma con:

 node --experimental-vm-modules --experimental-specifier-resolution=node node_modules/jest/bin/jest.js

como se recomienda en los documentos (todo lo demás funciona excepto el paquete web). Tenga en cuenta que lo he intentado con y sin --experimental-specifier-resolution=node (esto ha ayudado en otras circunstancias similares).

¿Alguna idea sobre cómo hacer que funcione el paquete web? ¡Gracias por adelantado!

Nota: ¡todo funcionaba hasta que se convirtió a ESM! Ahora solo el paquete web programático no funciona.

Configuración del paquete web:

 { entry, target: 'web', output: { path: outputDir, filename: '[name].js', }, mode: process.env.NODE_ENV as 'development' | 'production' | 'none' | undefined, resolve: { extensions: [ '.ts', '.tsx', '.js', '.jsx', '.ttf', '.eot', '.otf', '.svg', '.png', '.woff', '.woff2', '.css', '.scss', '.sass', ], }, module: { rules: [ { test: /\.(ttf|eot|otf|svg|png)$/, loader: 'file-loader', }, { test: /\.(woff|woff2)$/, loader: 'url-loader', }, { test: /\.(js|jsx|ts|tsx)$/, exclude: /node_modules/, loader: 'babel-loader', options: { sourceType: 'unambiguous', presets: [ [ '@babel/preset-env', { corejs: '3.0.0,', useBuiltIns: 'usage', }, ], '@babel/preset-react', '@babel/preset-typescript', ], plugins: [ 'css-modules-transform', [ 'babel-plugin-react-scoped-css', { include: '.scoped.(sa|sc|c)ss$', }, ], '@babel/plugin-proposal-class-properties', ], }, }, { test: /\.(sc|c|sa)ss$/, use: [ 'style-loader', 'css-loader', 'scoped-css-loader', 'sass-loader', ], }, ], }, }
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

La respuesta de @nerdlinger funcionó para mí. Tenía este webpack.config.js

 module.exports = { entry: './src/index.js', module: { rules: [ { test: /\.(js)$/, exclude: /node_modules/, use: { loader: 'babel-loader' } } ], } ... }

y lo cambié a esto

 module.exports = { entry: './src/index.js', module: { rules: [ { test: /\.(js)$/, exclude: /node_modules/, use: { loader: 'babel-loader' }, resolve: { fullySpecified: false, } } ], } ... }
over 4 years ago · Santiago Trujillo Denunciar

0

Ok, entonces encontré la solución aquí .

Básicamente, tuve que agregar 2 cosas a la configuración del paquete web en module.rules :

 { test: /\.m?js/, type: "javascript/auto", }, { test: /\.m?js/, resolve: { fullySpecified: false, }, },
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda