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.
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 afetch
causó este error.