Estoy desarrollando un archivo plugin/index.ts donde coloco funciones asíncronas, por ejemplo. limpiando la base de datos o subiendo archivos a la aplicación, pero empieza a crecer y pienso en una forma de mantenerlo limpio y estructurado.
En este video, veo que hay una manera de almacenar funciones en archivos separados y luego exportarlos usando module.exports = { function } y luego en index.ts simplemente importarlos usando require .
Pero no puedo hacer que funcione para mi caso.
Esta es una forma simplista de mi archivo plugins/index.ts :
const uploadDocument = require('./documents'); module.exports = (on, config) => { // `on` is used to hook into various events Cypress emits // `config` is the resolved Cypress config on('task', { clearDatabase: clearDatabase, uploadDocument: uploadDocument, }); async function clearDatabase() { ... } } Decidí mover el código de la función uploadDocument al archivo plugins/documents.ts :
y así es como se ve el archivo plugins/documents.ts :
imports... async function uploadDocument(fileName: string) { ... } module.exports = { uploadDocument }Y cuando ejecuto la prueba con una tarea de esta manera:
cy.task("uploadDocument", 'Very_light_file.pdf')Me sale este error en Cypress:
Parece que el problema está en su module.exports y en la importación.
Prueba esto,
// document.ts export async function uploadDocument(fileName: string) { ... } // module.exports = { uploadDocument } // plugins/index.ts import { uploadDocument } = from './documents'De la publicación, puedo decir que TS está mezclado con JS allí. El ejemplo está en JS, está usando TS, por lo que no hay module.exports.
Pruebe una versión JS pura, luego conviértala a TS.
Si observa cypress-io/cypress-realworld-app/blob/develop/cypress/plugins/index.ts , puede ver que cambian module.exports a:
// cypress/plugins/index.ts export default (on, config) => { config.env.defaultPassword = process.env.SEED_DEFAULT_USER_PASSWORD; config.env.paginationPageSize = process.env.PAGINATION_PAGE_SIZE; // Auth0 // // }