node.js - La ejecución de código mecanografiado usando ts-node genera el error "No se puede usar la declaración de importación f

CorePress2024-05-09  4

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

Estoy intentando ejecutar apollo-server y el código que he escrito está en TypeScript.

Mi carpeta de códigos contiene un tsconfig.json que se ve así:

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

El comando que estoy ejecutando es el siguiente:

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

Si elimino tsconfig.json (lo cual, por supuesto, no puedo hacer), el comando anterior funciona bien. No estoy seguro de qué configuración está causando realmente el problema.



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

¿encontraste una solución?

-----

@Pablo Por ahora he eliminado temporalmente la opción del módulo que parece funcionar.

-----

la configuración que está buscando es "módulo": "commonjs". Como ts-node ejecuta su código en el entorno nodejs, debe usar su sistema de módulos. Si necesita su configuración como predeterminada para su proyecto, puede crear un segundo tsconfig tsconfig.node.json y apuntarlo con ts-node --project <tsconfig.json>

tsconfig.node.json:

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


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

Intenté cambiar la opción del módulo a commonjs. No funcionó. Tengo importaciones de estilo es6 en el código. Genera un error por eso.

-----

Probaré este segundo enfoque de proporcionar un archivo tsconfig.json separado.

-----

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