Búsqueda de sitios web

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,.

Artículos relacionados