node.js - A execução do código TypeScript usando ts-node gera o erro "Não é possível usar a instrução de importação fora de um m

CorePress2024-05-09  3

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

Estou tentando executar o Apollo-Server e o código que escrevi está em TypeScript.

Minha pasta de código contém um tsconfig.json parecido com este:

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

O comando que estou executando está abaixo:

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

Se eu remover o tsconfig.json (o que obviamente não posso fazer), o comando acima funcionará bem. Não tenho certeza de qual configuração está realmente causando o problema.



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

você encontrou uma solução?

-----

@Pablo Por enquanto removi temporariamente a opção do módulo que parece funcionar.

-----

a configuração que você está procurando é "module": "commonjs". Como o ts-node está executando seu código no ambiente nodejs, você deve usar seu sistema de módulos. Se precisar da sua configuração como padrão para o seu projeto, você pode criar um segundo tsconfig tsconfig.node.json e direcioná-lo com ts-node --project <tsconfig.json>

tsconfig.node.json:

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


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

Tentei alterar a opção do módulo para commonjs. Não funcionou. Tenho importações de estilo es6 no código. Isso gera um erro.

-----

Vou tentar esta segunda abordagem de fornecer um arquivo tsconfig.json separado.

-----

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