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

444
Vistas
¿Cómo importar simplemente en Node? (Versión Vanilla JS) - incluido el tipo: módulo

Esta es una versión JS de una pregunta TS similar (no resuelta). Ver: ¿Cómo importar simplemente en Node? (Versión mecanografiada)

Intentando la importación más simple en Node, pero no puedo hacer que funcione ...

¡¡¡Nota!!! Se agregó "tipo": "módulo" como se sugiere en Node.js - SyntaxError: Importación de token inesperada

paquete.json

 { "type": "module", "name": "import_js", "version": "1.0.0", "description": "dummy project", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" }

índice.js

 import foo from './foo'; foo();

foo.js

 export default function foo() { console.log("FOO"); }

resultado

 $ node index.js /Users/projects/sb/import_js/index.js:1 import foo from './foo'; ^^^^^^ SyntaxError: Cannot use import statement outside a module at wrapSafe (internal/modules/cjs/loader.js:1072:16) at Module._compile (internal/modules/cjs/loader.js:1122:27) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1178:10) at Module.load (internal/modules/cjs/loader.js:1002:32) at Function.Module._load (internal/modules/cjs/loader.js:901:14) at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12) at internal/main/run_main_module.js:18:47
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Después de recrear sus mismos tres archivos en un directorio por sí mismos, descubrí que si cambio esto:

 import foo from './foo';

a esto:

 import foo from './foo.js';

Entonces, funciona. Creo recordar algo sobre los módulos ESM que dice que debe especificar la extensión del archivo y que no puede usar el nombre raíz como puede hacerlo con los módulos CommonJS.

Usando su código exacto, recreado en los mismos tres archivos, ejecutando el nodo v16.13.0, haciendo que este cambio funcione para mí.


Ahora, originalmente no recibí el mismo error que tu. Recibí este error:

 Error [ERR_MODULE_NOT_FOUND]: Cannot find module xxx import from yyy

Me pregunto si tenía un archivo llamado solo foo de alguna manera que estaba encontrando. Si no, algo más es todavía diferente en su sistema que el mío.

Me pregunto si todavía está tratando de usar un compilador de TypeScript y el objetivo de compilación de TypeScript está configurado para los módulos CommonJS.

Porque el error que recibe de alguna manera indica que se está cargando un módulo CommonJS, pero no hay razón para eso si solo se dan estos tres archivos en un directorio por sí mismos y no hay ningún paso de compilación de ningún tipo.

Cosas para que compruebes.

  1. ¿Está seguro de que cuando ejecuta node , está ejecutando el ejecutable del nodo simple y no algo que Typescript ha instalado que intentará compilar las fuentes usando alguna configuración predeterminada?

  2. ¿Hay ALGÚN otro archivo en este directorio? Si es así, aísle estos tres archivos en su propio directorio donde no haya otros archivos package.json en ninguna parte del árbol principal.

  3. Intente ejecutar el archivo test.js desde el mismo directorio (usando el mismo paquete.json) a continuación y vea lo que genera:

archivo de muestra:

 // test.js let foundDirname = typeof __dirname === "string"; let foundModule = typeof module === "object"; console.log("found __dirname", foundDirname); console.log("found module", foundModule); if (foundDirname && foundModule) { console.log("appears to be a CommonJS module") } else { console.log("appears to be an ESM module"); }

Esto debería indicarle si está tratando su archivo como un módulo CommonJS o un módulo ESM.

Ejecute este archivo de prueba con:

 node test.js
about 4 years ago · Juan Pablo Isaza Denunciar

0

Como sugiere el comentario de jsfriend, verifique si se trata de un módulo CommonJS. En caso de que sea el siguiente código servirá:

índice.js

 var foo = require('./foo.js'); foo.foo();

foo.js

 function foo() { console.log("FOO"); } exports.foo = foo;
about 4 years ago · Juan Pablo Isaza Denunciar

0

Simplemente importe así.

 const foo = require("./foo.js");
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