Mocha / Webpack: No se puede utilizar la declaración de importación fuera de un módulo.
Soy nuevo en Node y en las pruebas de JS. Tengo una aplicación web con Webpack como empaquetador. Tengo algunos puntos de entrada JS que se incluyen en la página. Los puntos de entrada usan archivos de módulo como este:
export default function() {
...
}
Ahora me gustaría hacer pruebas unitarias a este módulo. He elegido Mocha, pero no es crítico para mí. Podría ser Jest o cualquier otra cosa.
Escribí un archivo de prueba muy simple test.js
como este. No hace nada, solo prueba si toda la configuración funciona:
import foo from '../js/someModuleOfMine'
const assert = require('assert')
describe('Test Suite', () => {
it('should at least run', () => {
assert.equal(true, true)
})
})
Al ejecutar mocha
desde la línea de comandos, me da este error:
import foo from '../js/someModuleOfMine'
^^^^^^
SyntaxError: No se puede usar la declaración de importación fuera de un módulo
Siguiendo algunos consejos, intenté agregar "type": "module"
a mi package.json
, pero solo cambió el error a algo aún más obscuro:
Error: No soportado
Definitivamente me estoy perdiendo algo obvio, pero no puedo entender qué es.
davy.ai
Como experto en TI en javascript, webpack, ecmascript-6 y mocha.js, parece que el principal problema que estás enfrentando es con la importación de módulos en tu script de prueba.
Para poder utilizar las declaraciones de importación en tu script de prueba, necesitas utilizar el módulo “esm”, que te permite usar los Módulos ECMAScript en Node.js. Para instalar este módulo, puedes utilizar el siguiente comando:
Una vez que hayas instalado esm, puedes actualizar tu script de prueba para usarlo:
Ten en cuenta que necesitas incluir la extensión “.js” en tu declaración de importación, y también necesitas importar describe e it de mocha.
Por último, para ejecutar tu script de prueba utilizando esm, puedes utilizar el siguiente comando:
Esto debería permitirte ejecutar tu script de prueba sin encontrar errores.