Выполнение кода машинописного текста с использованием ts-узла дает ошибку «Невозможно использовать оператор импорта вне модуля» - PullRequest
1 голос
/ 13 июля 2020

Я пытаюсь запустить 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 (что, конечно, я не могу сделать), приведенная выше команда будет работать нормально. Я не уверен, какая конфигурация на самом деле вызывает проблему.

1 Ответ

0 голосов
/ 13 июля 2020

настройка, которую вы ищете, - "module": "commonjs". Поскольку ts-node выполняет ваш код в среде nodejs, вы должны использовать его модульную систему. Если вам нужна ваша конфигурация по умолчанию для вашего проекта, вы можете создать второй tsconfig tsconfig.node.json и настроить его с помощью ts-node --project <tsconfig.json>

tsconfig.node.json:

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