javascript - Obtenir l'erreur ts.createNodeArray n'est pas une fonction lors de la compilation d'un projet NestJS


Récemment, nous avons migré vers Node v19.7 depuis Node v14 dans notre projet NestJS, et ce faisant, nous avons mis à jour tous nos packages dans le fichier package.json.

Mais après avoir mis à jour le même, nous faisons maintenant face à une erreur étrange, et je ne parviens pas à comprendre ce qui pourrait la causer.

package.json :

{
    "name": "myproj",
    "version": "0.0.1",
    "private": true,
    "license": "UNLICENSED",
    "engines": {
        "npm": ">8.0.0 <=9.5.0",
        "node": "19.7.0"
      },
    "scripts": {
        "prebuild": "rimraf dist",
        "build": "nest build",
        "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
        "start": "nest start",
        "start-watch": "nest start --watch",
        "start-debug": "nest start --debug --watch",
        "lint": "eslint . --ext .ts -f json -o eslint-report.json",
        "lint-report": "eslint . -f node_modules/eslint-detailed-reporter/lib/detailed.js -o eslint-report.html",
        "test": "jest --coverage",
        "test:watch": "jest --watch",
        "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
        "test:e2e": "jest --config ./tests/jest-e2e.json",
        "prettier-format": "prettier --config .prettierrc **/*.ts --write",
        "prepare": "cd .. && husky install connector/.husky"
    },
    "dependencies": {
        "@google-cloud/tasks": "^3.1.1",
        "@nestjs/axios": "2.0.0",
        "@nestjs/common": "^8.4.7",
        "@nestjs/config": "^2.3.1",
        "@nestjs/core": "^8.4.7",
        "@nestjs/platform-express": "^8.4.7",
        "@nestjs/swagger": "^5.2.1",
        "@nestjs/terminus": "^8.1.1",
        "@types/dotenv": "^8.2.0",
        "@typescript-eslint/eslint-plugin": "^5.57.1",
        "@typescript-eslint/parser": "^5.57.1",
        "circular-json": "^0.5.9",
        "class-transformer": "^0.5.1",
        "class-validator": "^0.14.0",
        "dotenv": "^16.0.3",
        "eslint": "^8.37.0",
        "eslint-config-prettier": "^8.8.0",
        "eslint-detailed-reporter": "^0.9.0",
        "eslint-plugin-prettier": "^4.2.1",
        "eslint-plugin-security": "^1.7.1",
        "reflect-metadata": "^0.1.13",
        "rimraf": "^4.4.1",
        "rxjs": "^7.8.0",
        "swagger-ui-express": "^4.6.2",
        "uuid": "^9.0.0",
        "husky": "^8.0.3"
    },
    "devDependencies": {
        "@nestjs/cli": "^8.2.8",
        "@nestjs/schematics": "^9.0.0",
        "@nestjs/testing": "^8.4.7",
        "@types/express": "^4.17.17",
        "@types/jest": "^29.5.0",
        "@types/node": "^18.15.11",
        "@types/supertest": "^2.0.12",
        "@types/uuid": "^9.0.1",
        "jest": "^29.5.0",
        "lint-staged": "^13.2.0",
        "node-mocks-http": "^1.12.2",
        "prettier": "^2.8.7",
        "source-map-support": "^0.5.21",
        "supertest": "^6.3.3",
        "ts-jest": "^29.1.0",
        "ts-loader": "^9.4.2",
        "ts-node": "^10.9.1",
        "tsconfig-paths": "^4.2.0",
        "typescript": "^5.0.3",
        "husky": "^8.0.3"
    },
    "jest": {
        "moduleFileExtensions": [
            "js",
            "json",
            "ts"
        ],
        "rootDir": ".",
        "testRegex": ".*\\.spec\\.ts$",
        "transform": {
            "^.+\\.(t|j)s$": "ts-jest"
        },
        "collectCoverageFrom": [
            "**/*.(t|j)s"
        ],
        "coverageDirectory": "coverage",
        "testEnvironment": "node",
        "coveragePathIgnorePatterns": [
            "dist"
        ],
        "testTimeout": 9000
    }
}

En exécutant npm run start-watch, j'obtiens cette erreur : ts.createNodeArray n'est pas une fonction

J'ai déjà essayé de supprimer les dossiers node_modules et les fichiers package-lock.json, j'ai également essayé avec npm clean cache --force, mais cela n'a toujours pas aidé à résoudre ce problème.

Réponse #1

Essaie juste de faire ça

"ts-node": "~10.7.0",
"typescript": "~4.6.4"

Ça semble fonctionner pour moi. J'espère que ça aidera !

Réponse #2

Ceci est dû à la version de Typescript. En regardant vos journaux, avez-vous des problèmes avec les dépendances entre pairs ? Si oui, vous devez examiner le package qui cause le problème et vérifier ses peerDependencies. Assurez-vous qu'elles sont toutes compatibles. Faites-nous savoir si cela fonctionne.