node.js - Beim Ausführen von TypeScript-Code mit ts-node wird der Fehler „Importanweisung kann nicht außerhalb eines Moduls verw

CorePress2024-05-09  3

Executing typescript code using ts-node gives "Cannot use import statement outside a module" error

Ich versuche, apollo-server auszuführen, und der Code, den ich geschrieben habe, ist in TypeScript.

Mein Codeordner enthält eine tsconfig.json, die so aussieht:

{
  "compilerOptions": {
    "target": "esnext",
    "lib": [
      "esnext"
    ],
    "allowJs": true,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true
  },
  "include": [
    "server"
  ]
}

Der Befehl, den ich ausführe, ist unten:

$ npx ts-node ./server/index.ts

Wenn ich tsconfig.json entferne (was ich natürlich nicht tun kann), funktioniert der obige Befehl einwandfrei. Ich bin nicht sicher, welche Konfiguration das Problem tatsächlich verursacht.



-----------------------------------

Haben Sie eine Lösung gefunden?

-----

@Pablo Im Moment habe ich die Moduloption vorübergehend entfernt, die zu funktionieren scheint.

-----

Die von Ihnen gesuchte Einstellung ist „module“: „commonjs“. Da ts-node Ihren Code in der nodejs-Umgebung ausführt, müssen Sie dessen Modulsystem verwenden. Wenn Sie Ihre Konfiguration als Standard für Ihr Projekt benötigen, können Sie eine zweite tsconfig tsconfig.node.json erstellen und diese mit ts-node --project <tsconfig.json>

als Ziel verwenden

tsconfig.node.json:

{
  "extends": "./",
  "compilerOptions": {
    "module": "commonjs",
  },
}


-----------------------------------

Ich habe versucht, die Moduloption in commonjs zu ändern. Es hat nicht funktioniert. Ich habe Importe im ES6-Stil im Code. Dafür wird ein Fehler ausgegeben.

-----

Ich werde diesen zweiten Ansatz, eine separate tsconfig.json-Datei bereitzustellen, ausprobieren.

-----

Your guide to a better future - quark24
Your guide to a better future - quark24