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

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

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

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

0

Simplemente importe así.

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