Estoy tratando de agregar jest a mi proyecto de mecanografiado para probar, pero cuando ejecuto jest, me sigue dando el error
● Test suite failed to run Cannot find module 'fs/promises' from 'src/path/to/file' Require stack: src/path/to/file test/test.ts > 3 | import fsp from 'fs/promises'; at Resolver.resolveModule (node_modules/jest-resolve/build/resolver.js:311:11) at Object.<anonymous> (src/path/to/file.ts:3:1) El programa en sí funciona bien, pero cada vez que intento ejecutarlo, se encuentra con este problema. Intenté agregar jest.mock('fs'); , que no ayudó, y agregando jest.mock('fs/promises'); da el mismo error en el archivo de prueba.
He leído que ciertas versiones de Node no admiten 'fs/promises' y en su lugar necesitan require('fs').promises , que probé y aún no funciona (estoy en la versión 12 de Node) .
¿Cómo puedo configurar jest para poder cargar 'fs/promises' ? He incluido mi archivo jest.config.js continuación:
module.exports = { preset: 'ts-jest', testEnvironment: 'node', testPathIgnorePatterns: [ '/node_modules/', '/out/', ], moduleDirectories: [ '.', 'node_modules' ], moduleFileExtensions: [ 'ts', 'tsx', 'js', 'jsx' ] }Resulta que Jest está interpretando 'fs/promises' como una carpeta en el sistema de archivos, lo cual es incorrecto ya que se trata de una API del módulo fs. Para solucionar esto, simplemente agregue
moduleNameMapper: { "fs/promises": "<rootDir>/node_modules/fs-extra/lib/fs" } a jest.config.js para decirle a Jest que asigne el módulo 'fs/promises' al archivo <rootDir>/node_modules/fs-extra/lib/fs , o donde sea que esté definido el módulo fs en su sistema de archivos.