Getting error in my nestjs project with mocha and chai: TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for

58 Views Asked by At

I just simple create project using below commands: npm i -g @nestjs/cli

nest new project-name npm install --save-dev mocha chai @types/mocha @types/chai

package.json:

{
  "name": "project-name",
  "version": "0.0.1",
  "description": "",
  "author": "",
  "private": true,
  "license": "UNLICENSED",
  "scripts": {
    "test": "mocha -r ts-node/register 'test/**/*.ts'",
    "start": "nest start",
    "start:dev": "nest start --watch",
    "start:debug": "nest start --debug --watch",
    "start:prod": "node dist/main",
    "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
    "format": "prettier --write \"src/**/*.ts\""
  },
  "dependencies": {
    "@nestjs/common": "^10.0.0",
    "@nestjs/core": "^10.0.0",
    "@nestjs/platform-express": "^10.0.0",
    "reflect-metadata": "^0.2.0",
    "rxjs": "^7.8.1"
  },
  "devDependencies": {
    "@nestjs/cli": "^10.0.0",
    "@nestjs/schematics": "^10.0.0",
    "@tsconfig/node19": "^19.1.2",
    "@types/chai": "^4.3.12",
    "@types/express": "^4.17.17",
    "@types/mocha": "^10.0.6",
    "@types/node": "^20.3.1",
    "@types/supertest": "^6.0.0",
    "@typescript-eslint/eslint-plugin": "^6.0.0",
    "@typescript-eslint/parser": "^6.0.0",
    "chai": "^5.1.0",
    "cross-env": "^7.0.3",
    "eslint": "^8.42.0",
    "eslint-config-prettier": "^9.0.0",
    "eslint-plugin-prettier": "^5.0.0",
    "mocha": "^10.3.0",
    "nyc": "^15.1.0",
    "prettier": "^3.0.0",
    "source-map-support": "^0.5.21",
    "supertest": "^6.3.3",
    "ts-loader": "^9.4.3",
    "ts-node": "^10.9.2",
    "tsconfig-paths": "^4.2.0",
    "typescript": "^5.1.3"
  },
  "jest": {
    "moduleFileExtensions": [
      "js",
      "json",
      "ts"
    ],
    "rootDir": "src",
    "testRegex": ".*\\.spec\\.ts$",
    "transform": {
      "^.+\\.(t|j)s$": "ts-jest"
    },
    "collectCoverageFrom": [
      "**/*.(t|j)s"
    ],
    "coverageDirectory": "../coverage",
    "testEnvironment": "node"
  }
}

tsconfig.json:

{
  "compilerOptions": {
    "module": "commonjs",
    "declaration": true,
    "removeComments": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "allowSyntheticDefaultImports": true,
    "target": "ES2021",
    "sourceMap": true,
    "outDir": "./dist",
    "baseUrl": "./",
    "incremental": true,
    "skipLibCheck": true,
    "strictNullChecks": false,
    "noImplicitAny": false,
    "strictBindCallApply": false,
    "forceConsistentCasingInFileNames": false,
    "noFallthroughCasesInSwitch": false
  }
}

.mocharc.json

{
  "extension": [
    "ts"
  ],
  "spec": "test/**/*.ts",
  "require": [
    "ts-node/register",
    "source-map-support/register"
  ],
  "recursive": true
}

// src/calculator.service.ts

export class CalculatorService {
  add(a: number, b: number): number {
    return a + b;
  }
}

// test/calculator.service.spec.ts

import { expect } from 'chai';
import { CalculatorService } from '../src/calculator.service';

describe('CalculatorService', () => {
  let calculatorService: CalculatorService;

  beforeEach(() => {
    calculatorService = new CalculatorService();
  });

  describe('add', () => {
    it('should return the sum of two numbers', () => {
      const result = calculatorService.add(2, 3);
      expect(result).to.equal(5);
    });
  });

  // Add more tests here for other methods of CalculatorService
});

when i run npm test

[email protected] test cross-env TS_NODE_COMPILER_OPTIONS='{"module": "commonjs" }' mocha -r ts-node/register 'test/**/*.ts'

TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for /var/www/html/project-name/test/calculator.service.spec.ts at new NodeError (node:internal/errors:399:5) at Object.getFileProtocolModuleFormat [as file:] (node:internal/modules/esm/get_format:99:9) at defaultGetFormat (node:internal/modules/esm/get_format:139:38) at ESMLoader.defaultLoad (node:internal/modules/esm/load:83:20) at ESMLoader.load (node:internal/modules/esm/loader:342:43) at ESMLoader.moduleProvider (node:internal/modules/esm/loader:207:22) at new ModuleJob (node:internal/modules/esm/module_job:63:26) at ESMLoader.#createModuleJob (node:internal/modules/esm/loader:231:17) at ESMLoader.getModuleJob (node:internal/modules/esm/loader:184:34)

0

There are 0 best solutions below