Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

427
Views
SyntaxError: no se puede usar la declaración de importación fuera de un módulo

Tengo un proyecto ApolloServer que me está dando problemas, así que pensé en actualizarlo y me encontré con problemas al usar la última versión de Babel. Mi "index.js" es:

 require('dotenv').config() import {startServer} from './server' startServer()

Y cuando lo ejecuto me sale el error

 SyntaxError: Cannot use import statement outside a module

Primero intenté hacer cosas para convencer a TPTB* de que se trataba de un módulo (sin éxito). Así que cambié la " importación " a " requerir " y esto funcionó.

Pero ahora tengo alrededor de dos docenas de " importaciones " en otros archivos que me dan el mismo error.

*Estoy seguro de que la raíz de mi problema es que ni siquiera estoy seguro de qué se queja sobre el problema. Supuse que era Babel 7 (ya que vengo de Babel 6 y tuve que cambiar los ajustes preestablecidos), pero no estoy 100% seguro.

La mayoría de las soluciones que he encontrado no parecen aplicarse a Node. Como este de aquí:

Importación del módulo ES6 dando "Error de sintaxis no detectado: identificador inesperado"

Dice que se resolvió agregando "tipo = módulo", pero esto normalmente iría en el HTML, del cual no tengo ninguno. También intenté usar los ajustes preestablecidos antiguos de mi proyecto:

 "presets": ["es2015", "stage-2"], "plugins": []

Pero eso me genera otro error: "Error: los archivos de complemento/preestablecidos no pueden exportar objetos, solo funciones".

Aquí están las dependencias con las que comencé:

 "dependencies": { "@babel/polyfill": "^7.6.0", "apollo-link-error": "^1.1.12", "apollo-link-http": "^1.5.16", "apollo-server": "^2.9.6", "babel-preset-es2015": "^6.24.1",
over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Verifique que tiene instalada la última versión de Node.js (o, al menos, 13.2.0+). A continuación, realice una de las siguientes acciones, como se describe en la documentación :

Opción 1

En el archivo principal package.json más cercano, agregue el campo "type" de nivel superior con un valor de "module" . Esto garantizará que todos los archivos .js y .mjs se interpreten como módulos ES. Puede interpretar archivos individuales como CommonJS usando la extensión .cjs .

 // package.json { "type": "module" }

opcion 2

Nombra explícitamente los archivos con la extensión .mjs . Todos los demás archivos, como .js , se interpretarán como CommonJS, que es el valor predeterminado si el type no está definido en package.json .

over 4 years ago · Santiago Trujillo Report

0

Si alguien se encuentra con este problema con TypeScript , la clave para resolverlo fue cambiar

 "target": "esnext", "module": "esnext",

para

 "target": "esnext", "module": "commonjs",

En mi tsconfig.json . Tenía la impresión de que " esnext " era el "mejor", pero eso fue solo un error.

over 4 years ago · Santiago Trujillo Report

0

Para aquellos que estaban tan confundidos como yo al leer las respuestas, en su archivo package.json, agregue "type": "module" en el nivel superior como se muestra a continuación:

 { "name": "my-app", "version": "0.0.0", "type": "module", "scripts": { ... }, ... }
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!