Website-Suche

node.js - Erhalte `TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unbekannte Dateierweiterung ".ts"` in `ts-node`, wenn der Typ auf Modul gesetzt ist


Ich habe den absoluten Pfad in meinem Express-Projekt konfiguriert und dann den Typ auf Modul geändert, da ich import verwende, aber das gibt mir den Fehler TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unbekannte Dateierweiterung ".ts"

Hier ist meine tsconfig.json

{
  "compilerOptions": {
      "module": "ESNext",
      "moduleResolution": "bundler",
      "esModuleInterop": true,
      "forceConsistentCasingInFileNames": true,
      "strict": true,
      "skipLibCheck": true,
      "outDir": "./dist",
      "sourceMap": true,
      "incremental": true,
      "baseUrl": ".",
      "paths": {
          "@routes/*": ["./src/routes/*"],
      },
  },
  "include": ["src/**/*"],
  "ts-node": {
    "swc": true,
    "esm": true,
    "experimentalSpecifierResolution": "node"
  },
  "exclude": ["node_modules"]
}

hier ist mein package.json

{
...
  "version": "1.0.0",
  "description": "",
  "main": "./src/index.ts",
  "type": "module",
  "scripts": {
    "build": "npx tsc",
    "start": "node ./dist/index.js",
    "dev": "nodemon --watch './src/**/*.ts' --exec 'ts-node --swc --esm' ./src/index.ts",
    "prettier": "prettier --write .",
    "prepare": "husky install"
  },
  "lint-staged": {
    "**/*": "prettier --write --ignore-unknown"
  },
...
}

Ich habe versucht, das --esm-Flag mit ts-node zu verwenden, aber das Problem bleibt bestehen. Was ich möchte, ist, dass die absoluten Importe funktionieren, aber wenn ich ts-node entferne und concurrently \"npx tsc --watch\" \"nodemon -q ./dist/index.js\" benutze, funktionieren die absoluten Importe nicht. Ich stecke irgendwie in einer Schleife fest.

Antwort #1

Führe es mit aus

node --require ts-node/register --loader ts-node/esm