node.js - mocha Extensión de archivo desconocida ".ts"
Intentando hacer que esto funcione a partir del siguiente ejemplo
En mi mocharc.json:
{
"extension": ["ts"],
"spec": "test/unit/**/*.spec.ts",
"require": "ts-node/register"
}
en package.json:
"scripts": {
"tstest": "env TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' mocha",
...
"@types/mocha": "^10.0.0",
"mocha": "^9.2.0",
"ts-node": "^10.9.1",
"typescript": "^4.8.4"
Ejecutar tstest me da:
TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for project/test/unit/create.spec.ts
at new NodeError (node:internal/errors:393:5)
at Object.getFileProtocolModuleFormat [as file:] (node:internal/modules/esm/get_format:79:11)
at defaultGetFormat (node:internal/modules/esm/get_format:121:38)
at defaultLoad (node:internal/modules/esm/load:81:20)
at nextLoad (node:internal/modules/esm/loader:163:28)
at ESMLoader.load (node:internal/modules/esm/loader:605:26)
at ESMLoader.moduleProvider (node:internal/modules/esm/loader:457:22)
at new ModuleJob (node:internal/modules/esm/module_job:63:26)
at ESMLoader.#createModuleJob (node:internal/modules/esm/loader:480:17)
at ESMLoader.getModuleJob (node:internal/modules/esm/loader:434:34)
at async Promise.all (index 0)
at async ESMLoader.import (node:internal/modules/esm/loader:530:24)
at async importModuleDynamicallyWrapper (node:internal/vm/module:438:15)
at async formattedImport (project/node_modules/mocha/lib/nodejs/esm-utils.js:7:14)
at async Object.exports.requireOrImport (project/node_modules/mocha/lib/nodejs/esm-utils.js:48:32)
at async Object.exports.loadFilesAsync (project/node_modules/mocha/lib/nodejs/esm-utils.js:103:20)
at async singleRun (project/node_modules/mocha/lib/cli/run-helpers.js:125:3)
at async Object.exports.handler (project/node_modules/mocha/lib/cli/run.js:374:5)
y create.spec.ts es:
import { expect } from 'chai'
describe('Happy to get this to work', () => {
it('ts test', async () => {
expect(true).to.be.equal(false)// yes it should fail
})
})
Cloné el ejemplo y puse el tsconfig de mi proyecto allí y funcionó en el ejemplo pero no en mi proyecto. No puedo averiguar qué me falta aquí.
Cuando uso ts-node y las versiones de TypeScript del package.json en el ejemplo, obtengo el error Error: Debug Failure. False expression: Non-string value passed to ts.resolveTypeReferenceDirective,.