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