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

445
Views
¿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 answers
Answer question

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 Report

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 Report

0

Simplemente importe así.

 const foo = require("./foo.js");
about 4 years ago · Juan Pablo Isaza 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!