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