Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

418
Vistas
Error de nodo: no se puede usar la declaración de importación fuera de un módulo aunque no lo esté

Estoy usando Pm2 y este es el error:

 SyntaxError: Cannot use import statement outside a module Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.

El problema es que el package.json ya está configurado en "type": "module" .

Además, todo solía funcionar bien hasta que reinicié el servidor.

Aquí está el archivo .js real:

 const http = require('http'); const url = require('url'); const querystring = require('querystring'); const hostname = 'localhost'; const port = 8080; import captureWebsite from 'capture-website'; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World!\n'); .... });
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Si las llamadas require no arrojan un error, el "archivo .js real" que crea el servidor http en la publicación se trata como CommonJS. Pero el código CommonJS no puede usar declaraciones de import y necesita usar expresiones de importación en su lugar (consulte los documentos de nodo y MDN ).

Si usa importaciones dinámicas (que son asíncronas), también necesitará usar el módulo importado después de una declaración de await (dentro de una función async ), o en un controlador de éxito proporcionado en un método then :

 // .... import('capture_website') .then( capture_website => { // code requiring existence of `capture_website` }) .catch( err=> console.error("Import of capture_website failed", err));

Sin embargo, puede importar módulos CommonJS usando una declaración de importación en archivos ES6 ( Node doc ).

Por lo tanto, una mejor solución puede ser cambiar el nombre del archivo js principal publicado para darle una extensión .mjs y reemplazar todas las declaraciones requeridas en el archivo con declaraciones de import :

 import http from 'http'; import url from 'url'; import querystring from 'querystring';

Esto elimina el error de sintaxis Cannot use import statement outside a module . Los módulos importados que son CommonJS aún deberían poder requerir módulos usando la función require .

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda