Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

319
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda