node.js - ts-node を使用して typescript コードを実行すると、「モジュール外のインポート ステートメントは使用できません」エラーが発生する

CorePress2024-05-09  4

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

apollo-server を実行しようとしていますが、作成したコードは TypeScript です。

コード フォルダーには、次のような tsconfig.json が含まれています。

{
  "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"
  ]
}

実行しているコマンドは以下のとおりです。

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

tsconfig.json を削除すると (もちろん削除できません)、上記のコマンドは正常に機能します。実際にどの構成が問題の原因となっているのかわかりません。



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

解決策は見つかりましたか?

-----

@Pablo 今のところ、機能していると思われるモジュール オプションを一時的に削除しました。

-----

検索している設定は「module」:「commonjs」です。 ts-node は、nodejs 環境でコードを実行するため、そのモジュール システムを使用する必要があります。プロジェクトのデフォルトとして設定が必要な場合は、2 番目の tsconfig tsconfig.node.json を作成し、それを ts-node --project <tsconfig.json> でターゲットにすることができます。

tsconfig.node.json:

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


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

モジュールオプションをcommonjsに変更してみました。うまくいきませんでした。コードにes6スタイルのインポートがあります。そのためエラーがスローされます。

-----

別の tsconfig.json ファイルを提供するこの 2 番目のアプローチを試してみましょう。

-----

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