mi configuración
import ).package.json tengo un script (siguiendo la documentación de Jest adaptada a Windows): "test": "set \"NODE_OPTIONS=--experimental-vm-modules\" && npx jest"npm run test (el script anterior)Mi objetivo: Ejecutar las pruebas de ESM usando broma.
Mis intentos:
package.json contiene "type": "commonjs"test.jsSyntaxError: Cannot use import statement outside a module (esto se esperaba porque la prueba se ejecuta como un archivo commonjs).package.json contiene "type": "commonjs"test.mjsNo tests found (¿Jest no encuentra el archivo?)package.json ahora tiene "type": "module"test.mjs o test.jsReferenceError: module is not defined at ...jest.config.js:6:1package.json contiene "type": "commonjs"test.js pero usando la sintaxis commonjs require (y sin los módulos ESM que me gustaría incluir); Tenga en cuenta que esto no es lo que quiero , pero se incluye solo para mostrar que no hay nada malo con la prueba en sí.Estos son los pasos que tomé para ejecutar Jest con una prueba usando ESM. Los archivos fuente bajo prueba también se escribieron usando ESM.
npm i jest -D instala Jest como una dependencia de desarrollo"type": "module" a package.jsonscripts en package.json para incluir "test": "node --experimental-vm-modules ./node_modules/.bin/jest"jest.config.js con el siguiente contenido: export default { transform: {} }testMatch predeterminado (la mía estaba dentro del directorio __tests__ )npm testHay un ejemplo más completo en el repositorio webpack-strip-debug-loader en GitHub.
Después de mucho juguetear, esta es mi configuración exitosa (las partes que importan):
package.json tiene "type": "commonjs", "script": { "test": "NODE_OPTIONS=--experimental-vm-modules jest" }jest.config.mjs (sí, esModule) export default { moduleFileExtensions: [ "mjs", // must include "js" to pass validation https://github.com/facebook/jest/issues/12116 "js", ], testRegex: `test\.mjs$`, }; Que tener que incluir "js" es una reliquia histórica de los módulos de tiempos donde obviamente los archivos .js. Siga https://github.com/facebook/jest/issues/12116 para obtener actualizaciones.
Para que yo trabajara, solo era necesario configurar el script "test" de la siguiente manera:
"test": "cross-env NODE_OPTIONS=--experimental-vm-modules npx jest"
y sí, no lo olvides -> npm i cross-env jest