es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué no está funcionando require() para mis constantes exportadas en un módulo de node.js?

Estoy tratando de ejecutar esta prueba en Jest:

test("encontrar el inicio más temprano", () => {
  expect(findEarliestStart([ex.TS2])).toBe(ex.TS2.start_time);
  expect(findEarliestStart([ex.TS5, ex.TS2, ex.TS6])).toBe(ex.TS5.start_time);
});

Tengo este require en el archivo de prueba:

const ex = require("constants");

Recibo el error de que TS2 no está definido, específicamente “TypeError: No se puede leer la propiedad ‘start_time’ de indefinido”.

En constants.ts tengo:

const TS2: Timeslot =
{start_time: 940,
  end_time: 980,
  day: "Miércoles",
  term: "2"
}

const TS5: Timeslot =
{start_time: 180,
  end_time: 210,
  day: "Miércoles",
  term: "2"
}

const TS6: Timeslot =
{start_time: 250,
  end_time: 310,
  day: "Miércoles",
  term: "2"
}

module.exports = {
  TS2:TS2, TS5:TS5, TS6:TS6
}

La función findEarliestStart se ve así:

/**
 * retorna el inicio más temprano de todas las franjas horarias
 * @param {Timeslot[]} lots 
 */
export const findEarliestStart = (lots:Timeslot[]): Time => {
  if(!lots.length){
    throw new Error("no se puede encontrar el inicio más temprano de un arreglo vacío");
  };
  return lots.reduce((min:number, ts:Timeslot) => {
    return (ts.start_time < min) ? ts.start_time : min
  },
  Number.MAX_VALUE)
}
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El problema parece estar con la importación del archivo de constantes. En lugar de usar require, usa import para importar las constantes desde constants.ts.

    Entonces, el código actualizado del archivo de prueba debería ser:

    “`import { findEarliestStart } from ‘./fileWithFunction’;
    import { TS2, TS5, TS6 } from ‘./constants’;

    test(“Encontrar el inicio más temprano”, () => {
    expect(findEarliestStart([TS2])).toBe(TS2.start_time);
    expect(findEarliestStart([TS5, TS2, TS6])).toBe(TS5.start_time);
    });“`

    Esto debería solucionar el error de que TS2 no está definido.

Comments are closed.