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.

La prueba con mocha + node-fetch + typescript da un error extraño.

Adapté un proyecto para usar Mocha y me encontré con un error extraño que me llevó un tiempo diagnosticar.

> npm run test

TypeError: Extensión de archivo desconocida “.ts” para C:\code\mocha-example\packages\typescript\test\index.spec.ts`
… pila de llamadas …
en Object.exports.handler (C:\code\mocha-example\packages\typescript\node_modules\mocha\lib\cli\run.js:374:5)

Revisé muchas preguntas sobre este error que sugerían cambiar las opciones del compilador de Typescript, pero nada funcionó, ni siquiera cambiar ‘type’: ‘module’ or cualquiera de las otras sugerencias.

Así que construí una reproducción mínima desde el ejemplo de Mocha:

https://github.com/mochajs/mocha-examples/tree/master/packages/typescript

Resulta que llamar a “fetch” desde “node-fetch” como sigue causa el problema:

import fetch from “node-fetch”;
const foo = async () => {
return fetch(“http://www.example.com”);
};
export default function (incomingText: string) {
return ${incomingText}-static;
}

La función foo no es ejecutada por la prueba, pero aún así causa el error. Tampoco da error si no hago referencia a fetch de ninguna manera, incluso solo un console.log(fetch) es suficiente.

Aquí está la prueba tal como está en el ejemplo, solo como referencia.

import { equal } from "assert";
import index from "./";

describe("Typescript usage suite", () => {
  it("should be able to execute a test", () => {
    equal(true, true);
  });
  it("should return expected string", () => {
    equal(index("incoming"), "incoming-static");
  });
});

Añadí tanto “node-fetch” como “@types/node-fetch” al repositorio local. Tener los tipos no hace ninguna diferencia. No tengo ni idea de cómo simplemente hacer referencia a fetch causó ese error.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en TypeScript, Mocha.js y node-fetch, me encontré con un error extraño al adaptar mi proyecto para usar Mocha. Al ejecutar el comando npm run test, recibí el siguiente error:

    `TypeError: Extensión de archivo desconocida ".ts" para C: \ código \ mocha-example \ paquetes \ typescript \ test \ index.spec.ts`

    Después de revisar varias preguntas y sugerencias, como cambiar las opciones del compilador TypeScript y "type": "module", construí una reproducción mínima del ejemplo de Mocha.js. Descubrí que llamar a "fetch" de "node-fetch" causó el problema, incluso si no fue ejecutado por la prueba.

    El código de prueba en cuestión es el siguiente:

    `
    import fetch from "node-fetch";
    const foo = async () => {
    return fetch("http://www.example.com");
    };
    export default function (incomingText: string) {
    return `${incomingText}-static`;
    }
    `

    Cabe destacar que no causó un error si no hice referencia a fetch o incluso si uséconsole.log (fetch).

    Para referencia, aquí está el código de prueba del ejemplo de Mocha.js:

    “ `
    import {equal} from “assert”;
    import index from “./”;

    describe (“Suite de uso de TypeScript”, () => {
    it (“debería ser capaz de ejecutar una prueba”, () => {
    igual (verdadero, verdadero);
    });
    it (“debería devolver una cadena esperada”, () => {
    igual (índice (“entrante”), “entrante-estático”);
    });
    });
    “ `

    Además, aunque agregué "node-fetch" y"@ types / node-fetch" al repositorio local e instalé los tipos, no hizo ninguna diferencia, y sigo sin saber por qué hacer referencia a fetch causó este error.

Comments are closed.